HTML代码提取
本帖最后由 qq3911909 于 2009-11-27 06:16 编辑不知道我这样写的代码是否有问题...还请大侠知道,,,刚学AUTOIT没几天...顺便能找个师傅最好,我只会问师傅一些关键的地方,不会一有问题就问的...我QQ3911909#include <String.au3>
#include <IE.au3>
#Include <GuiListView.au3>
_Main()
func _Main();分析网页获取连接,下载到TEMP文件夹
;For $urlx = 16379 to 16382 Step 1
Dim $s_Start = '<h2>'
$s_End = '下载页面'
$d_Start = "下载地址列表"
$d_End = " 第1部分(3GP格式)"
Dim $url="http://www.80s.cn/MovieDownloadsSubMod.aspx?formatid=2&movieid=16379"
InetGet($url,'temp\temp.txt',0,0)
;IniWrite ("D:\AU3\IE\url.ini", "电影", "网页代码", $HTMLContents )
$HTMLContents=FileRead('temp\temp.txt')
Local $dyname = _StringBetween($HTMLContents,$s_Start,$s_End)
Local $dyurl =_StringBetween($HTMLContents, $d_Start, $d_End)
IniWrite ("D:\AU3\IE\temp\url.ini", "电影", "电影名", $dyname)
IniWrite ("D:\AU3\IE\temp\url.ini", "电影", "下载路径", $dyurl)
EndFunc 标题好像有问题。小心哦! 本帖最后由 qq3911909 于 2009-11-27 02:40 编辑
标题好像有问题。小心哦!
bing614 发表于 2009-11-27 02:11 http://www.autoitx.com/images/common/back.gif
知道了..谢谢提醒...不知道我上面的代码是否哪里有写错..或者缺什么吗? 回复 3# qq3911909
你自己测试没? 这样至少会有数组问题 回复qq3911909
你自己测试没? 这样至少会有数组问题
afan 发表于 2009-11-27 02:58 http://www.autoitx.com/images/common/back.gif
自己测试很多回了...好像得到的都是0..
不知道问题出在哪里...
是不支持带换行符还是其他什么问题呢?/
版主不知道可以加我QQ,我好有些问题可以请教呢.
还有你说的数组问题...我不清楚什么东西...刚学AUTOIT.,,,很多东西都还不明白,,, $HTMLContents=FileRead('temp\temp.txt')
后面加一句
msgbox(0,0,$HTMLContents)
你就知道读取到的东西是什么了 #include <String.au3>
Local $Url = "http://www.80s.cn/MovieDownloadsSubMod.aspx?formatid=2&movieid=16379"
Local $InetRead = InetRead($Url), $_Title, $_StrSplt, $i, $_temp, $_temp1, $_String
If $InetRead <> "" Then $InetRead = BinaryToString($InetRead, 4)
$_Title = _StringBetween($InetRead, "<h2>", "</h2>")
If IsArray($_Title) Then $_Title = StringReplace($_Title, "下载页面", "")
$_String &= $_Title & @CRLF
$_StrSplt = _StringBetween($InetRead, '<a href="#"', "</a>")
If IsArray($_StrSplt) Then
For $i = 0 To UBound($_StrSplt) - 1
$_temp = _StringBetween($_StrSplt[$i], "/>" & @CRLF, ")")
If IsArray($_temp) Then $_temp = StringStripWS($_temp, 8) & ")"
$_temp1 = _StringBetween($_StrSplt[$i], 'onclick="FlashgetDown(', ",'80410');return false;")
If IsArray($_temp1) Then $_temp1 = $_temp1
$_String &= $_temp & " : " & $_temp1 & @CRLF
Next
EndIf
FileWrite("test.txt", $_String)
MsgBox(0, "", $_String)
用正则也可以. $HTMLContents=FileRead('temp\temp.txt')
后面加一句
msgbox(0,0,$HTMLContents)
你就知道读取到的东西 ...
afan 发表于 2009-11-27 03:19 http://www.autoitx.com/images/common/back.gif
代码是读取了到了..
截取出了问题....
不能活着中间的代码... 回复 8# qq3911909
LS已经帮你搞定了~ 用正则也可以.
bing614 发表于 2009-11-27 03:27 http://www.autoitx.com/images/common/back.gif
谢谢,,,我在电脑运行报错....不知道怎么回事.. 刚刚测试了下...脚本没有问题..是我的笔记本安装的是Win7,刚刚在另外一个Windows2003系统上测试没有问题...
谢谢 正则方式:For $urlx = 16379 To 16382
Local $Url = "http://www.80s.cn/MovieDownloadsSubMod.aspx?formatid=2&movieid=" & $urlx
Local $InetRead = InetRead($Url), $HTMLContents, $sR, $sR2
If $InetRead <> "" Then $HTMLContents = BinaryToString($InetRead, 4)
$sR = StringRegExp($HTMLContents, '<h2>《.(.*).》下载页面', 3)
If @error = 0 Then
$sR = StringRegExpReplace($sR, "\[|\]", '"')
$sR2 = StringRegExp($HTMLContents, '<a href.+onclick=.FlashgetDown..(.+).,.+return false;.\s+.+\s+([^<]+)</a>', 3)
If @error = 0 Then
For $i = 0 To UBound($sR2) - 1 Step 2
IniWrite("url.ini", $sR, $sR2[$i + 1], $sR2[$i] & '/')
Next
EndIf
EndIf
Next
If MsgBox(64 + 4, 0, '已完成,是否打开ini查看?') = 6 Then ShellExecute("url.ini") 谢谢楼上两位....
页:
[1]