找回密码
 加入
搜索
查看: 1352|回复: 4

为什么提取链接数量少了一半?

[复制链接]
发表于 2009-2-10 21:53:43 | 显示全部楼层 |阅读模式
例子在下面,用与正则表达式从网页中提取一些链接的标题
实际上正则表达式对应30条记录,但却只能有15条
不明白为什么,请教
谢谢!

#include <INet.au3>
$oIE=_INetGetSource("http://www.verycd.com/groups/SandBox/")

$sReturns=StringRegExp($oIE,'<a href="/groups/SandBox/\d*\.topic">(.+?)</a>',3)

for $i = 0 to UBound($sReturns) - 1
        $buffer = StringToBinary($sReturns[$i])
        $buffer = BinaryToString($buffer,4)
        ConsoleWrite($i & "....." & $buffer & @CR)
Next
;
;
;$i = 0
;For $sReturn In $sReturns
;        $i = $i + 1
;        $buffer = StringToBinary($sReturn)
;        $buffer = BinaryToString($buffer,4)
;        ConsoleWrite($i & "....." & $buffer & @CRLF)
;Next


我发现现在问题有两个了:
1、只能取到一半的链接文本
2、链接文本都好像取不全,会把后面的文字截掉了


问题出在哪里?

[ 本帖最后由 老榆头 于 2009-2-11 21:12 编辑 ]
 楼主| 发表于 2009-2-11 18:58:57 | 显示全部楼层
自己顶一下
发表于 2009-2-11 20:49:53 | 显示全部楼层
#include <IE.au3>
$oIE = _IECreate ("http://www.verycd.com/groups/SandBox/")
$txt = _IEDocReadHTML($oIE)
_Get($txt)

Func _get($txt);循环获取链接  
        $Url = ""
        $nOffset = ""
    While 1
        $array = StringRegExp($txt,'<A href="/groups/SandBox/(.*?).topic">', 1,$nOffset)
                If @error = 0 Then
           $nOffset = @extended
                Else
            ExitLoop
        EndIf
        for $i = 0 to UBound($array) - 1
        $Url=$array[$i]
        FileWrite("log.txt",$Url&@CRLF)
                Next
        WEnd
EndFunc
 楼主| 发表于 2009-2-11 21:12:53 | 显示全部楼层
谢谢楼上朋友的回复
这种方法的确可以获得正确的链接(链接的ID)

但我想知道
我那种方法问题出在哪里

谢谢!
 楼主| 发表于 2010-4-10 19:26:42 | 显示全部楼层
问题已经解决,麻烦版主移动此帖到已解决区,谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-3 04:43 , Processed in 0.072257 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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