老榆头 发表于 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、链接文本都好像取不全,会把后面的文字截掉了

问题出在哪里?:face (32):

[ 本帖最后由 老榆头 于 2009-2-11 21:12 编辑 ]

老榆头 发表于 2009-2-11 18:58:57

自己顶一下

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

问题已经解决,麻烦版主移动此帖到已解决区,谢谢
页: [1]
查看完整版本: 为什么提取链接数量少了一半?