正则表达式的奇怪问题,晒晒~【已解决】
本帖最后由 cihren 于 2014-11-24 23:07 编辑正则表达式提取网页中的一断数据,当字符串结果长度超过15时,自动变成“。。。”三个省略号,但在工具中测试,一切正常,奇怪。
代码和图附上,谁能解释下~Dim $aArr
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)
Next
_ArrayDisplay($aArr)
listview控件本身显示的问题 不影响你的实际结果 楼上正解~~
楼主可以MsgBox(0,'',$aArr)看看就知道了。 回复 2# veket_linux
不是这个原因,MsgBox和ConsleWrite都试过了,结果都一样,见图。
像这这,同样是文本,地址就显示全了,但名称不全。
像这这,同样是文本,地址就显示全了,但名称就是不全。 楼主能上全代码吗?网页地址是哪里? 回复 6# cihren
我记得好像应该不存放数据吧,
试试把For $i = 0 To UBound($aCompanyURL) - 1改成For $i = 1 To UBound($aCompanyURL) - 1试试呢,, 回复 3# Authree
数组能够这样显示??? 回复 9# xms77
我是新手,才学AU3,,,他这个是一维数组,应该可以这样表示啊? 本帖最后由 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)
EndIf以上是全代码,下边是程序运行结果:
回复 7# haijie1223
这是在工具里的运行结果,完全正确。
但一到程序里就异常,晕死~ 网页源码$sHtml 用ConsoleWrite输出看一下。浏览器中有时看到的源码与_IEBodyReadHTML不一样。 回复 12# cihren
我也曾遇到过类似怪问题, 同样是用 IE.AU3 的函数操作读取的源码.
但我没纠结到底是什么原因,果断换别方式实现了.#include <inet.au3>
Local$url = "http://qid1030.1688.com/page/contactinfo.htm"
$sHtml = _INetGetSource($url) 回复 14# user3000
{:face (356):}
赞一个,太有才了,又学了一招。
用这个方法,结果果然正确。看来有时候执着是必须的,放弃也是必要的。
如果谁解释下原因就更完美了,坐等~