对网页源代码进行正则匹配,为何有的成功,有的不成功?

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: arcticir, tmplinshi

youwantme
Posts: 47
Joined: 11 May 2015, 21:27

对网页源代码进行正则匹配,为何有的成功,有的不成功?

28 May 2015, 04:03

目标:都是匹配 <title> 与 </title>两个标签之间的内容

代码一:对百度主页进行匹配,成功

网页源代码包含:<title>百度一下,你就知道 </title>

Code: Select all

Gui, Margin, 0, 0
Gui Add, ActiveX, x0 y0 w1024 h500 xm vWB, Shell.Explorer 
Gui, Show
WB.Silent := True ; 这一句可以避免一些网页弹出脚本错误
WB.Navigate("www.baidu.com") ;浏览网页
While WB.readystate != 4 or WB.busy
    Sleep 200
PageCode:=% wb.document.DocumentElement.outerHTML
RegExMatch(PageCode, "<title>(.*?)</title>", m,1) ; .*?</h1> 只匹配到第一个碰到的 </h1>
MsgBox, %m1%
Return
GuiClose:
ExitApp


代码二:对搜狐主页进行匹配,弹出空白对话框,匹配失败 :

网页源代码包含:<title>搜狐-中国最大的门户网站</title>

Code: Select all

Gui, Margin, 0, 0
Gui Add, ActiveX, x0 y0 w1024 h500 xm vWB, Shell.Explorer 
Gui, Show
WB.Silent := True ; 这一句可以避免一些网页弹出脚本错误
WB.Navigate("www.sohu.com") ;浏览网页
While WB.readystate != 4 or WB.busy
    Sleep 200
PageCode:=% wb.document.DocumentElement.outerHTML
RegExMatch(PageCode, "<title>(.*?)</title>", m,1) ; .*?</h1> 只匹配到第一个碰到的 </h1>
MsgBox, %m1%
Return
GuiClose:
ExitApp
不知这个问题出在哪里?是不是因为sohu的网页源代码前面有空行的缘故?求大神指导!谢谢!
tmplinshi
Posts: 1557
Joined: 01 Oct 2013, 14:57

Re: 对网页源代码进行正则匹配,为何有的成功,有的不成功?

28 May 2015, 05:32

加上 "i)<title>(.*?)</title>" 忽略大小写。因为 wb.document.DocumentElement.outerHTML 里面的内容是大写的 <TITLE>搜狐-中国最大的门户网站</TITLE>
另外,PageCode 赋值那一句的百分号是多余的,写成 PageCode := wb.document.DocumentElement.outerHTML 就好了。
youwantme
Posts: 47
Joined: 11 May 2015, 21:27

Re: 对网页源代码进行正则匹配,为何有的成功,有的不成功?

28 May 2015, 05:35

多谢指导!
tmplinshi wrote:加上 "i)<title>(.*?)</title>" 忽略大小写。因为 wb.document.DocumentElement.outerHTML 里面的内容是大写的 <TITLE>搜狐-中国最大的门户网站</TITLE>
另外,PageCode 赋值那一句的百分号是多余的,写成 PageCode := wb.document.DocumentElement.outerHTML 就好了。

Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 45 guests