找回密码
 加入
搜索
查看: 9190|回复: 14

[AU3基础] 如何提取网页里的文本?

 火.. [复制链接]
发表于 2011-2-17 05:40:41 | 显示全部楼层 |阅读模式
http://wawac.blogbus.com/logs/105574703.html

比如这个网页里有以下一段内容,我想以“开始”起,到“结束 ”止。中间的内容提取后,输出一个INI文件。该 如何实现 呢?

这样做的目的是,我不想把INI直接 放到服务器上,那样下载下来用是简单了,但是如果下载量大,空间受不了。所以想这样迂回一下,放到BLOG里再提取来用?这样是否可行,大家 还有没有更好的办法 呢?


开始

[323]

323323=2323

323323=2323

323323=2323



[323]

323323=2323

323323=2323

323323=2323



结束

发表于 2011-2-17 10:25:00 | 显示全部楼层
读取源码,然后用正则匹配提取
发表于 2011-2-17 10:35:57 | 显示全部楼层
正则可以帮到你!可惜我不会!
发表于 2011-2-17 11:31:36 | 显示全部楼层
帮你支持下。
发表于 2011-2-17 12:11:23 | 显示全部楼层
本帖最后由 水木子 于 2011-2-17 12:17 编辑

$sUrl = 'http://wawac.blogbus.com/logs/105574703.html'
$oHTTP = ObjCreate('microsoft.xmlhttp')
$oHTTP.Open('get', $sUrl, False)
$oHTTP.Send()
$sText = BinaryToString($oHTTP.responseBody, 4)
$aRe = StringRegExp($sText, '(?s)(?<=开始)(.+?)结束', 3)
$sRer = StringRegExpReplace($aRe[1], '<p>|</p>| ', '')
FileWrite('Test.ini', $sRer)


上面代码得到的结果会有空行,当然空行是不影响操作的,如果楼主要去掉空行,可以在第7行下面插入一行如下。
$sRer = StringRegExpReplace($sRer, '^\v+|\r?\n(?=\r?\n)|\r?\n$', '')
发表于 2011-2-17 16:13:11 | 显示全部楼层
弱弱地问一下,对au3里的正则不太熟,好像每次都用(?s)开头,是何含义呢?
发表于 2011-2-17 16:25:04 | 显示全部楼层
回复 6# kevinch
正则表达式!其实正则在各大语言几乎都是通用的,可能有些略有差异。

至于(?s)并不是每次开头都会用到,这要根据不同的表达式来定。
它的含义可以理解为让 “.” 可以跨行匹配,而默认情况下“.” 是不能跨行匹配的。

评分

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

查看全部评分

发表于 2011-2-17 18:36:01 | 显示全部楼层
原来相当于multiline=true啊,看来还是应该多看下au3的正则,跟我会的vbs正则还是很有些不同的
 楼主| 发表于 2011-2-20 04:00:05 | 显示全部楼层
回复 7# 水木子


谢谢水木子,不过我用这段代码提取的是到INI后,打开,这些数据是没有分行的,完全是头尾相接的,这样数据似乎乱了。我再研究一下。谢谢您。
发表于 2011-2-20 04:19:15 | 显示全部楼层
回复 9# imnebula
加上下面一句:
$sRer = StringReplace($sRer, @LF, @CRLF)
发表于 2011-2-20 16:40:05 | 显示全部楼层
学习一下///////////////////
 楼主| 发表于 2011-2-22 03:48:46 | 显示全部楼层
回复 10# happytc

嗯。太棒了。谢谢您!!
发表于 2011-2-22 19:54:34 | 显示全部楼层
StringReplace($sRer, @LF, @CRLF)
替换后,直接使用au3内置的一个函数,更简单
_StringBetween
发表于 2011-2-22 23:08:57 | 显示全部楼层
正则,很多地方都要用到的。
发表于 2011-2-23 20:30:29 | 显示全部楼层
这个要顶,真的很不错,早都想学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 16:28 , Processed in 0.083393 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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