yb980 发表于 2013-1-23 19:42:23

[网页提取]如何提取网页信息到数组

如下,获取的网页源代码如下,请问用什么方法把信息提取到数组,以备使用?
<option value="">请选择</option><option value="001">中国</option><option value="002">台港</option><option value="004">黑人</option><option value="005">白人</option>

yb980 发表于 2013-1-23 19:43:20

提取到二维数组
001 中国
002 台港
。。。。

zch11230 发表于 2013-1-23 20:56:35

如果确实要二维的话 再重新赋一次值吧 不过用 $array[$i]和$array[$i+1]也一样很方便嘛#include <array.au3>
Local $array=StringRegExp(ClipGet(),'value="(\d+)">([^<]+)',3)
_ArrayDisplay($array)

haijie1223 发表于 2013-1-23 21:03:12

二维数组,是不是要用两次正则,有请A版讲解。
#include<array.au3>
Dim $n1, $n2
Dim $String = '<option value="">请选择</option><option value="001">中国</option><option value="002">台港</option><option value="004">黑人</option><option value="005">白人</option>'
$n1 = StringRegExp($String, '\d+', 3)
$n2 = StringRegExp($String, '\d+">([^<]+)', 3)
If IsArray($n1) And IsArray($n2) Then
        Dim $n
        For $i = 0 To UBound($n1) - 1
                $n[$i] = $n1[$i]
                $n[$i] = $n2[$i]
        Next
EndIf
_ArrayDisplay($n)

yb980 发表于 2013-1-23 21:19:08

思路,先获取一维数组,然后一维数组读入二维数组

yb980 发表于 2013-1-23 21:31:31

经过测试如下可以:

#include <Array.au3>
Local $Str = FileRead('test.txt')
MsgBox(0,"",$Str)
Local $aSR = StringRegExp($str, '<(?i)option value="(.*?)">(.*?)</(?i)option>', 3)
Local $zlhy   
   For $i = 0 To UBound($aSR)-1 Step 2
      $zlhy[($i+2)/2-1] = $aSR[$i]
      $zlhy[($i+2)/2-1] = $aSR[$i + 1]
   Next   
_ArrayDisplay($zlhy, '')

afan 发表于 2013-1-24 00:32:52

回复 4# haijie1223


    正则的结果只能有一维,像3#所说,只能再赋值一个新数组。或者直接使用i+1的下标。或者如你所用的两次正则建立两个数组,可以以下标号成对使用。

huangke 发表于 2013-1-26 13:53:24

正则之后再赋值。很好的思路
页: [1]
查看完整版本: [网页提取]如何提取网页信息到数组