acbs 发表于 2012-6-5 11:09:17

如何获取网页内链接?

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

$sUrl = 'http://www.excelpx.com/forum-5-1.html'
ToolTip('正在获取源码,请稍候……')
$str = _INetGetSource($sUrl)
$str = StringRegExpReplace($str, 'onclick=', '')
$sR = StringRegExp($str, '<a href=\"(.+?)\".+class=\"《(.+)》', 3)
If @error Then Exit MsgBox(0, 0, '未找到匹配~')
Dim $link, $x = 0
For $i = 0 To UBound($sR) - 1 Step 2
      $link[$x] = $sR[$i + 1]
      $link[$x] = 'http://www.excelpx.com/' & $sR[$i]
      $x += 1
Next
_ArrayDisplay($link, '标题及链接')主要是正则不太会用,哪位高手指点一下啊?谢了。

shqf 发表于 2012-6-5 11:58:48

本帖最后由 shqf 于 2012-6-5 12:07 编辑

class后面不是标题吧。标题应该在<a></a>之间。网页中的 href有各种类别、各种样式,你看清楚了吗?你要哪类,没说清楚。且有的链接本就带有“http://www.excelpx.com/”,有的链接没带。问题补充得细一点吧。那样才会有人来帮你呵!
补充:楼主是否要想获取各个贴子的标题及链接吗?

acbs 发表于 2012-6-5 14:54:50

本帖最后由 acbs 于 2012-6-5 14:55 编辑

class后面不是标题吧。标题应该在之间。网页中的 href有各种类别、各种样式,你看清楚了吗?你要哪类,没说 ...
shqf 发表于 2012-6-5 11:58 http://www.autoitx.com/images/common/back.gif
是的,我想要的就是各个贴子的链接。

那个代码由于网站类型不同,所以拿到新的网站不行了,请大家指点,谢谢。

shqf 发表于 2012-6-5 15:07:46

你细看一下网页源码,你会发现唯帖子的链接语句中含有“atarget”字样,据此可写正则表达式了。
#include <INet.au3>
#include <Array.au3>
$sUrl = 'http://www.excelpx.com/forum-5-1.html'
ToolTip('正在获取源码,请稍候……')
$str = _INetGetSource($sUrl)
$sR = StringRegExp($str, '<a href=\"(.+?)\".*\"atarget.+?>(.+?)</a>', 3)
If @error Then Exit MsgBox(0, 0, '未找到匹配~')
Dim $link, $x = 0
For $i = 0 To UBound($sR) - 1 Step 2
        $link[$x] = $sR[$i + 1]
        $link[$x] = $sR[$i]
        $x += 1
Next
_ArrayDisplay($link, '标题及链接')

zerobin 发表于 2012-6-5 15:29:07

顶楼上的。会正则的真牛
页: [1]
查看完整版本: 如何获取网页内链接?