lele9013 发表于 2010-8-15 06:15:23

有个网页提取相关内容 大家看看能不能帮下

我想提取一个网页的搜索结果

http://www.soso.com/q?pid=s.idx&ch=s.idx&w=autoit

想提取 搜索结果的标题及url 请问复杂吗

我看了下代码 好像有点规律 比如 他第一个搜索 为 <liclass="topsp">

<a href="http://baike.baidu.com/view/239490.htm" id="res0" onClick="reportUrl(this,'1','1');st_get(this,'w.r',1);" target="_blank"><em>autoit</em>_百度百科</a></h3><p><em>AutoIt</em>   这个就是他标题 和地址了

ajian55 发表于 2010-8-15 12:48:15

每一项都是<li >和</li>标记起来的,可以通过这个标记将网页进行拆分,然后从每一项中提取相应的内容~
我只能想到这个比较笨的办法,不知道LZ的“复杂”是什么概念~

afan 发表于 2010-8-15 13:31:37

#include <INet.au3>
#include <Array.au3>

$Url = 'http://www.soso.com/q?pid=s.idx&ch=s.idx&w=autoit'
ToolTip('正在获取源码,请稍候……')
$str = _INetGetSource($Url)
$str = StringRegExpReplace($str, '<em>|</em>', '')
$sR = StringRegExp($str, '"([^\"]+)"\hid="res.+?target="_blank">(.+?)<span', 3)
If @error Then Exit MsgBox(0, 0, '未找到匹配~')
ToolTip('')
_ArrayDisplay($sR, '链接&标题')

lele9013 发表于 2010-8-15 14:15:14

万能的 正则啊

lele9013 发表于 2010-8-15 14:17:41

回复 3# afan


    发现个问题

标题好像没取干净 把后面的也提取了


版主能否介绍下2个 正则的 解释啦

afan 发表于 2010-8-15 14:19:10

回复afan


    发现个问题

标题好像没取干净 把后面的也提取了
lele9013 发表于 2010-8-15 14:17 http://www.autoitx.com/images/common/back.gif

哪个?

lele9013 发表于 2010-8-15 14:35:21

我自己 搞定了 谢谢版主啊

你原先那个 除了标题 还把后面的介绍也提取了

$sR = StringRegExp($str, '"([^\"]+)"\hid="res.+?targ', 3)


$sR1 = StringRegExp($str, 'et="_blank">(.+?)</a></h3><p>', 3)



这样就可以了。。。$str = StringRegExpReplace($str, '<em>|</em>', '') 请问这句是干嘛用的

afan 发表于 2010-8-15 14:47:35

回复 7# lele9013

我这没这问题

倒是你改的确是包含后面的N多字符… 难道网页源码有异?

$str = StringRegExpReplace($str, '<em>|</em>', '') 是删除标题中的高亮代码
页: [1]
查看完整版本: 有个网页提取相关内容 大家看看能不能帮下