sdu123 发表于 2013-6-25 20:26:09

【已解决】请教一个ie提取网页内容的正则

本帖最后由 sdu123 于 2013-6-26 10:24 编辑

小弟新学autoit对正则不太懂请教一个用提取网页内容的正则
我写的代码是:#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate ("http://news.sciencenet.cn/htmlnews/2013/6/279092.shtm")
_IELoadWait ($oIE,0,10000)
$sText0 = _IEDocReadHTML($oIE)
MsgBox(0, 0, $sText0)
$array = StringRegExp($sText0, '<div style="TEXT-INDENT: 2em">(.*?)</div>', 3)
For $i = 0 To UBound($array) - 1
    MsgBox(0, 0, $array[$i])
Next测试通不过   没提取到任何内容

网页源代码是:
                                          <div>&nbsp;</div>
<div style="TEXT-INDENT: 2em">受教育部及日本学术振兴会的委托,国家留学基金管理委员会(以下简称留学基金委)负责日本学术振兴会论文博士奖学金执行工作。录取人员无需在日本高校履修博士课程,可在国内导师和日本导师的联合指导下完成博士论文,经答辩合格后可获得日本大学的论文博士学位。现将有关选拔事宜通知如下:</div>
<div>&nbsp;</div>
<div style="TEXT-INDENT: 2em"><strong>一、选派计划</strong></div>
<div>&nbsp;</div>
<div style="TEXT-INDENT: 2em">(一)选派专业:不限。</div>



我想提取<div style="TEXT-INDENT: 2em">和</div>之间的汉字   请教一下我的代码错在哪里啊?

user3000 发表于 2013-6-25 23:24:25

回复 1# sdu123


    你正则没问题, 问题在于你弄错了源数据!

2em;">       注意"2em"后面有个分号" :"
而你把它弄丢了!

haijie1223 发表于 2013-6-25 21:20:25

实在想不到更好的,还是请A版出手吧~#include <Array.au3>
#include <Inet.au3>
$sText0 = BinaryToString(_INetGetSource('http://news.sciencenet.cn/htmlnews/2013/6/279092.shtm', 0), 4)
$array = StringRegExp($sText0, '(?m)m\"\>.*?([^\x00-\xff]+.*?)\<', 3)
_ArrayDisplay($array)

annybaby 发表于 2013-6-25 23:00:28

回复 1# sdu123

不是正则的:

#include <IE.au3>
$oIE = _IECreate("http://news.sciencenet.cn/htmlnews/2013/6/279092.shtm",1,0)
$Ele = _IEGetObjById($oIE,"content1")
MsgBox(0,"是你要的吗??",$Ele.outertext)

haijie1223 发表于 2013-6-26 09:12:06

回复 3# annybaby


    不错,学习了。有没有不需要开网页的办法。

sdu123 发表于 2013-6-26 10:18:31

回复 2# haijie1223


多谢haijie1223的热情帮助!学习了你的正则感觉我的正则可能是特殊符号没有加转义。

sdu123 发表于 2013-6-26 10:19:22

回复 3# annybaby


    多谢annybaby的热情帮助!原来ie还可以直接提取文本内容,学习了!

sdu123 发表于 2013-6-26 10:20:34

回复 4# user3000


    非常感谢user3000的帮助啊!我的正则其实加了:号的,刚学习了haijie1223的正则,觉得我的可能是特殊符号没加转义。

sdu123 发表于 2013-6-26 10:21:39

问题解决了非常感谢各位大牛的帮助!

user3000 发表于 2013-6-26 12:26:53

回复 8# sdu123


    是分号 ;
    不是冒号 :
这不是元字符,不用转义

sdu123 发表于 2013-6-26 13:57:44

回复 10# user3000


    可是源代码里面没有分号啊。

user3000 发表于 2013-6-26 18:35:33

回复 11# sdu123

看网页源码的确是没有!!!
但这个分号确实存在, 你试试#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate ("http://news.sciencenet.cn/htmlnews/2013/6/279092.shtm")
_IELoadWait ($oIE,0,10000)
$sText0 = _IEDocReadHTML($oIE)
;MsgBox(0, 0, $sText0)
$array = StringRegExp($sText0, '(?i)<div style="TEXT-INDENT: 2em;?">(.*?)</div>', 3)
_ArrayDisplay($array)
FileWrite('r.txt', $sText0)
ShellExecute('r.txt')我昨天是放到剪贴板后贴出来看到的.

sdu123 发表于 2013-6-26 21:09:37

回复 12# user3000


    神人啊这都能发现!多谢大牛的指点!

mylve 发表于 2013-7-18 21:19:48

学习了
巅峰时代

li123168 发表于 2013-8-9 13:57:36

{:face (356):}学习了。。
页: [1] 2
查看完整版本: 【已解决】请教一个ie提取网页内容的正则