找回密码
 加入
搜索
查看: 15096|回复: 32

[效率算法] 正则表达式的奇怪问题,晒晒~【已解决】

 火.. [复制链接]
发表于 2014-10-15 23:57:42 | 显示全部楼层 |阅读模式
本帖最后由 cihren 于 2014-11-24 23:07 编辑

正则表达式提取网页中的一断数据,当字符串结果长度超过15时,自动变成“。。。”三个省略号,但在工具中测试,一切正常,奇怪。

代码和图附上,谁能解释下~
Dim $aArr[0]
For $i = 0 To UBound($aCompanyURL) - 1
        _IENavigate($oIE, $aCompanyURL[$i])
        $sHtml = _IEBodyReadHTML($oIE)
        $aName = StringRegExp($sHtml,'company-name[^>]*>([^<]+)',3)
        If Not @error        Then        _ArrayAdd($aArr, $aName[0])
Next
_ArrayDisplay($aArr)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-10-16 08:02:58 | 显示全部楼层
listview控件本身显示的问题 不影响你的实际结果
发表于 2014-10-16 10:13:33 | 显示全部楼层
楼上正解~~
楼主可以
MsgBox(0,'',$aArr[16])
看看就知道了。
 楼主| 发表于 2014-10-16 19:25:49 | 显示全部楼层
回复 2# veket_linux


    不是这个原因,MsgBox和ConsleWrite都试过了,结果都一样,见图。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-10-16 19:36:28 | 显示全部楼层


像这这,同样是文本,地址就显示全了,但名称不全。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-10-16 19:37:19 | 显示全部楼层


像这这,同样是文本,地址就显示全了,但名称就是不全。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-10-16 20:03:14 | 显示全部楼层
楼主能上全代码吗?网页地址是哪里?
发表于 2014-10-17 09:48:58 | 显示全部楼层
回复 6# cihren


    我记得好像[0][0]应该不存放数据吧,
试试把
For $i = 0 To UBound($aCompanyURL) - 1
改成
For $i = 1 To UBound($aCompanyURL) - 1
试试呢,,
发表于 2014-10-17 12:45:08 | 显示全部楼层
回复 3# Authree
数组能够这样显示???
发表于 2014-10-17 15:40:33 | 显示全部楼层
回复 9# xms77


    我是新手,才学AU3,,,他这个是一维数组,应该可以这样表示啊?
 楼主| 发表于 2014-10-17 23:13:58 | 显示全部楼层
本帖最后由 cihren 于 2014-10-17 23:17 编辑

回复 7# haijie1223
#include<IE.au3>
#include<array.au3>

$oIE = _IECreate("http://qid1030.1688.com/page/contactinfo.htm",0,1)
Sleep(3000)
$sHtml = _IEBodyReadHTML($oIE)
$aCompanyId = StringRegExp($sHtml,'(?i)company-name[^>]*>([^<]+)',3)
If Not @error        Then
        _ArrayDisplay($aCompanyId)
        MsgBox(0,"debug",$aCompanyId[0])
EndIf
以上是全代码,下边是程序运行结果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-10-17 23:22:36 | 显示全部楼层
回复 7# haijie1223





这是在工具里的运行结果,完全正确。

但一到程序里就异常,晕死~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-10-18 09:51:20 | 显示全部楼层
网页源码$sHtml 用ConsoleWrite输出看一下。浏览器中有时看到的源码与_IEBodyReadHTML不一样。
发表于 2014-10-18 18:27:10 | 显示全部楼层
回复 12# cihren

我也曾遇到过类似怪问题, 同样是用 IE.AU3 的函数操作读取的源码.
但我没纠结到底是什么原因,果断换别方式实现了.
#include <inet.au3>
Local  $url = "http://qid1030.1688.com/page/contactinfo.htm"
$sHtml = _INetGetSource($url)

评分

参与人数 1金钱 +10 收起 理由
cihren + 10

查看全部评分

 楼主| 发表于 2014-10-18 19:21:27 | 显示全部楼层
回复 14# user3000




    赞一个,太有才了,又学了一招。

    用这个方法,结果果然正确。看来有时候执着是必须的,放弃也是必要的。

    如果谁解释下原因就更完美了,坐等~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 18:46 , Processed in 0.085296 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表