找回密码
 加入
搜索
查看: 11564|回复: 16

[网络通信] 【已解决】请教一个ie提取网页内容的正则

 火.. [复制链接]
发表于 2013-6-25 20:26:09 | 显示全部楼层 |阅读模式
本帖最后由 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>之间的汉字   请教一下我的代码错在哪里啊?
发表于 2013-6-25 23:24:25 | 显示全部楼层
回复 1# sdu123


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

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

评分

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

查看全部评分

发表于 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)

评分

参与人数 1金钱 +30 收起 理由
sdu123 + 30

查看全部评分

发表于 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)

评分

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

查看全部评分

发表于 2013-6-26 09:12:06 | 显示全部楼层
回复 3# annybaby


    不错,学习了。有没有不需要开网页的办法。
 楼主| 发表于 2013-6-26 10:18:31 | 显示全部楼层
回复 2# haijie1223


多谢haijie1223的热情帮助!学习了你的正则  感觉我的正则可能是特殊符号没有加转义。
 楼主| 发表于 2013-6-26 10:19:22 | 显示全部楼层
回复 3# annybaby


    多谢annybaby的热情帮助!原来ie还可以直接提取文本内容,学习了!
 楼主| 发表于 2013-6-26 10:20:34 | 显示全部楼层
回复 4# user3000


    非常感谢user3000的帮助啊!我的正则其实加了:号的,刚学习了haijie1223的正则,觉得我的可能是特殊符号没加转义。
 楼主| 发表于 2013-6-26 10:21:39 | 显示全部楼层
问题解决了  非常感谢各位大牛的帮助!
发表于 2013-6-26 12:26:53 | 显示全部楼层
回复 8# sdu123


    是分号 ;
    不是冒号 :
这不是元字符,不用转义
 楼主| 发表于 2013-6-26 13:57:44 | 显示全部楼层
回复 10# 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')
我昨天是放到剪贴板后贴出来看到的.
 楼主| 发表于 2013-6-26 21:09:37 | 显示全部楼层
回复 12# user3000


    神人啊  这都能发现!多谢大牛的指点!
发表于 2013-7-18 21:19:48 | 显示全部楼层
学习了
巅峰时代
发表于 2013-8-9 13:57:36 | 显示全部楼层
学习了。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 01:07 , Processed in 0.302800 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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