[已解决]如何将网页上的数据写入数组
本帖最后由 星云散落 于 2012-7-30 16:56 编辑网页链接:http://www.orlydb.com/
需要提取的数据
这种请教,我很想帮忙,但是工作量有点大,楼主求代码呢吗,呵呵 回复 1# 星云散落
写进EXCEL就可以了啊。 本帖最后由 星云散落 于 2012-7-30 12:19 编辑
这种请教,我很想帮忙,但是工作量有点大,楼主求代码呢吗,呵呵
wsfda 发表于 2012-7-30 11:29 http://www.autoitx.com/images/common/back.gif
前辈能否给个简单的例子参考下 我好举一反三 这里应该要用正则吧 这部分实在不太懂 怎样才能把网页上的5段数据用正则分别提取出来呢 回复 4# 星云散落
不需要用正则啊。对于这种指定网页的数据读取不需要正则表达式的。
你用inget把源文件读下来,再读取数据就可以了啊。 本帖最后由 星云散落 于 2012-7-30 13:24 编辑
回复星云散落
不需要用正则啊。对于这种指定网页的数据读取不需要正则表达式的。
你用inget把 ...
甜茶少年 发表于 2012-7-30 12:45 http://www.autoitx.com/images/common/back.gif
style="BORDER-BOTTOM: #e0e0e0 2px solid; BORDER-LEFT: #e0e0e0 2px solid; PADDING-BOTTOM: 10px; MARGIN-TOP: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: inline-block; BACKGROUND: #f5f5f5; MARGIN-LEFT: 20px; FONT-SIZE: 20px; BORDER-TOP: #e0e0e0 2px solid; BORDER-RIGHT: #e0e0e0 2px solid; PADDING-TOP: 10px"
href="http://www2.filedroid.net/AF_TA/rel/index.cfm?TAD=426567">World´s safest
download option! Anonymous Downloads & Identity Protection!</A>
<DIV id=releases>
<DIV><SPAN class=timestamp>2012-07-30 05:14:13</SPAN> <SPAN class=section><A
href="http://www.orlydb.com/s/xxx">XXX</A></SPAN> <SPAN
class=release>MySistersHotFriend.12.07.30.Rikki.Six.XXX.1080p.MP4-KTR</SPAN> <A
class=dlright
href="http://www.orlydb.com/dl/MySistersHotFriend.12.07.30.Rikki.Six.XXX.1080p.MP4-KTR/"><SPAN
class=dl>DL</SPAN></A> <SPAN class=inforight><SPAN class=info>937.0MB |
19F</SPAN></SPAN> </DIV>
<DIV><SPAN class=timestamp>2012-07-30 05:12:40</SPAN> <SPAN class=section><A
href="http://www.orlydb.com/s/tv-x264">TV-x264</A></SPAN> <SPAN
class=release>Insane.Coaster.Wars.S01E05.Extreme.Heights.HDTV.x264-OMiCRON</SPAN>
<A class=dlright
href="http://www.orlydb.com/dl/Insane.Coaster.Wars.S01E05.Extreme.Heights.HDTV.x264-OMiCRON/"><SPAN
class=dl>DL</SPAN></A> <SPAN class=inforight><SPAN class=info>264.0MB |
271F</SPAN></SPAN> </DIV>
<DIV><SPAN class=timestamp>2012-07-30 05:11:23</SPAN> <SPAN class=section><A
href="http://www.orlydb.com/s/xxx">XXX</A></SPAN> <SPAN
class=release>ATKGalleria.12.07.30.Ann.Marie.La.Sante.Masturbation.XXX.1080p.MP4-KTR</SPAN>
<A class=dlright
href="http://www.orlydb.com/dl/ATKGalleria.12.07.30.Ann.Marie.La.Sante.Masturbation.XXX.1080p.MP4-KTR/"><SPAN
class=dl>DL</SPAN></A> <SPAN class=inforight><SPAN class=info>1005.0MB |
24F</SPAN></SPAN> </DIV>
源文件直接读下来是这样的 我要问的问题其实就是怎么把一段段的"<DIV>数据</DIV>“之内的东西都放入一个一维数组 再把每一段的”<DIV>数据</DIV>“之间的一段段"<SPAN class=数据</SPAN>"放入二维数组里
网页上的每一行组成一维数组
每一行中的一个个数据组成二维数组 比如:
时间:2012-07-30 05:12:40
分类:TV-x264
名称:Insane.Coaster.Wars.S01E05.Extreme.Heights.HDTV.x264-OMiCRON
大小:264.0MB
数目:271F
不需要用正则吗 那直接怎么读取和写入呢 回复 6# 星云散落
我搞定把源代码给你,给我一分钟 本帖最后由 甜茶少年 于 2012-7-30 14:26 编辑
回复 6# 星云散落 #include <File.au3>
#Include <Array.au3>
Local $hDownload = InetGet("http://www.orlydb.com/", @ScriptDir& "\orlydb.html", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; 检查下载是否完成.
MsgBox(0,"","finsh")
InetClose($hDownload) ; 关闭句柄,释放资源.
Local $File,$N=131,$M=0,$I,$T
Local $IntArray,$TemArray
$IntArray="时间"
$IntArray="分类"
$IntArray="名称"
$IntArray="大小"
$IntArray="数目"
$File=FileOpen("orlydb.html")
;每次读取一行文本,直到文件结束.
Do
Local $line = FileReadLine($File,$N)
If @error = -1 Then ExitLoop
;去除空格
$line=StringStripWS($line,1)
$line=StringStripWS($line,2)
$I=StringInStr($line,">")
$line=StringTrimLeft($line,$I)
$I=StringInStr($line,"<","",-1)
$I=StringLen($line)-$I+1
$line=StringTrimRight($line,$I)
$T=Mod($N-131,11)
Select
Case $T=1
$M=$M+1
Case $T=2
$IntArray[$M]=$line
Case $T=3
$I=StringInStr($line,">")
$line=StringTrimLeft($line,$I)
$I=StringInStr($line,"<","",-1)
$I=StringLen($line)-$I+1
$line=StringTrimRight($line,$I)
$IntArray[$M]=$line
Case $T=4
$IntArray[$M]=$line
Case $T=7
$I=StringInStr($line,">")
$line=StringTrimLeft($line,$I)
$I=StringInStr($line,"<","",-1)
$I=StringLen($line)-$I+1
$line=StringTrimRight($line,$I)
$TemArray=StringSplit($line,"|",2)
$IntArray[$M]=StringStripWS($TemArray,2)
$IntArray[$M]=StringStripWS($TemArray,1)
EndSelect
$N=$N+1
Until $N=668
FileClose($File)
额,十分钟,我大意了 本帖最后由 星云散落 于 2012-7-30 14:09 编辑
回复星云散落 额,十分钟,我大意了
甜茶少年 发表于 2012-7-30 13:59 http://www.autoitx.com/images/common/back.gif
非常感谢! 不过代码保存下来编译之后说错误的数组或者数组超过界限…… 回复 9# 星云散落
的确有点错误,首先,我有点眼花{:face (245):}
这个是11组一个循环,我愣是数成了10.
你需要改成($M-131,11) #include <File.au3>
#Include <Array.au3>
Local $hDownload = InetGet("http://www.orlydb.com/", @ScriptDir& "\orlydb.html", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; 检查下载是否完成.
MsgBox(0,"","finsh")
InetClose($hDownload) ; 关闭句柄,释放资源.
Local $File,$N=131,$M=0,$I,$T
Local $IntArray,$TemArray
$IntArray="时间"
$IntArray="分类"
$IntArray="名称"
$IntArray="大小"
$IntArray="数目"
$File=FileOpen("orlydb.html")
;每次读取一行文本,直到文件结束.
Do
Local $line = FileReadLine($File,$N)
If @error = -1 Then ExitLoop
;去除空格
$line=StringStripWS($line,1)
$line=StringStripWS($line,2)
$I=StringInStr($line,">")
$line=StringTrimLeft($line,$I)
$I=StringInStr($line,"<","",-1)
$I=StringLen($line)-$I+1
$line=StringTrimRight($line,$I)
$T=Mod($N-131,10)
Select
Case $T=1
$M=$M+1
Case $T=2
$IntArray[$M]=$line
Case $T=3
$I=StringInStr($line,">")
$line=StringTrimLeft($line,$I)
$I=StringInStr($line,"<","",-1)
$I=StringLen($line)-$I+1
$line=StringTrimRight($line,$I)
$IntArray[$M]=$line
Case $T=4
$IntArray[$M]=$line
Case $T=7
$I=StringInStr($line,">")
$line=StringTrimLeft($line,$I)
$I=StringInStr($line,"<","",-1)
$I=StringLen($line)-$I+1
$line=StringTrimRight($line,$I)
$TemArray=StringSplit($line,"|",1)
$IntArray[$M]=$TemArray
$IntArray[$M]=$TemArray
EndSelect
$N=$N+1
Until $N=668
FileClose($File)
修正后的代码如上。
{:face (356):} 本帖最后由 星云散落 于 2012-7-30 15:16 编辑
修正后的代码如上。
甜茶少年 发表于 2012-7-30 14:33 http://www.autoitx.com/images/common/back.gif
貌似这段新的编译之后还是说数组超过界限 然后上面第一段代码按您说的修改之后运行是通过了 但是_ArrayDisplay($IntArray) 读不到数据……
回复 12# 星云散落
我这边测试正常啊。 回复 12# 星云散落
经过仔细测试,发现数据只能读到2012-07-30 05:51:50这个时间点。
因为这个时间点缺少大小和下载次数这两个数据,程序出错。但是之前的数据都能正常读取。 回复星云散落
我这边测试正常啊。
甜茶少年 发表于 2012-7-30 15:39 http://www.autoitx.com/images/common/back.gif
又去试了下 11楼这段新代码 我用3.3.7.2/3.3.9.4/3.3.9.5三个版本编译之后运行都是弹这个错误……
页:
[1]
2