[已解决]求获取某个网页部分内容的正则表达式。
本帖最后由 netsmu 于 2010-11-25 09:07 编辑网页是 :http://lrc.aspxp.net/?k=%BA%C9%CC%C1&st=ti
第一个要获取的内容是三首 荷塘 歌名,例如(荷塘月色,荷塘 月色,荷塘月色),如果能把歌手( 歌手:凤凰传奇)获取出来就更完美啦。
第二个是要获取LRC的下载地址,例如(http://lrc.aspxp.net/lrc.asp?id=360762&id1=106&t=lrc&ac=dl)
非常感谢各位坛友的帮助。 贴上部分网页源码如下:
<div class="lrclist">
<div id="ti">
<strong><a class="fred">12</a>.歌曲:<a href="./?f=1&ti=%BA%C9%CC%C1+%D4%C2%C9%AB"><span class="red">荷塘</span> 月色</a></strong></div>
<div id="ar">
<strong> 歌手:<a href="./?f=1&ar=%B7%EF%BB%CB%B4%AB%C6%E6">凤凰传奇</a></strong></div>
<div id="al">
<strong> 专辑:</strong></div>
<div id="show">
<strong> 显示:</strong>
<a href="lrc.asp?id=358360&id1=143&t=txt" target="_blank">TXT格式</a><img src="images/txt.gif">
<a href="lrc.asp?id=358360&id1=143&t=lrc" target="_blank">LRC格式</a><img src="images/lrc.gif">
<a href="lrc.asp?id=358360&id1=143&t=xml" target="_blank">XML格式<img src="images/xml.gif"></a>
</div>
<div id="down">
<strong> 下载:</strong>
<a href="lrc.asp?id=358360&id1=143&t=txt&ac=dl" target="_blank">TXT格式<img src="images/txt.gif"></a>
<a href="lrc.asp?id=358360&id1=143&t=lrc&ac=dl" target="_blank">LRC格式<img src="images/lrc.gif"></a>
<a href="lrc.asp?id=358360&id1=143&t=smi&ac=dl" target="_blank">SMI格式<img src="images/smi.gif"></a>
</div>
<div id="song">
最好是可以获取
1、歌曲:
2、 歌手:
3、还有下载地址2 LRC格式。 本帖最后由 shano 于 2010-11-24 18:36 编辑
我是菜鸟 代码很乱#include<array.au3>
#include<ie.au3>
Dim $HTMLSource
_get('http://lrc.aspxp.net/?k=%BA%C9%CC%C1&st=ti')
;FileWrite('c:\1.txt',$HTMLSource)
$sR = StringRegExp($HTMLSource, '="red">(.+?)</', 3)
$song1=$sR
$sR = StringRegExp($HTMLSource, '</span>(.+?)</a>', 3)
$song2=$sR
MsgBox(0,"歌名",$song1&" "&$song2)
$sR = StringRegExp($HTMLSource, '歌手:.+?>(.+?)</a>', 3)
$songer=$sR
MsgBox(0,"歌手",$songer)
$sR = StringRegExp($HTMLSource, 'a href="lrc.asp(.+?)" target="_blank">LRC格式', 3)
$LRC=$sR
MsgBox(0,"LRC格式下载地址",'www.***.com/lrc.asp'&$LRC)
Func _get($url)
$httpObj = ObjCreate("winhttp.winhttprequest.5.1")
$httpObj.open("GET", $url)
$httpObj.Send()
$HTMLSource = BinaryToString(($httpObj.responseBody) ,1 )
EndFunc 两次正则即可:
1,替换掉可能有的颜色高亮标签,使之后的匹配不用再判断处理
StringRegExpReplace('源码字符', '</span>', '')
2,一次匹配所有的歌名、歌手、下载地址
StringRegExp('上次处理后的源码', '(?s)id="ti".+?([^><]+)</a><.+?id="ar".+?([^><]+)</a><.+?id="down".+?href="([^"]+)[^>]+>LRC', 3)
afan 我太爱你了。{:face (88):} 学习了,谢谢 本帖最后由 netsmu 于 2010-11-25 09:39 编辑
仔细研究了一下3楼的方法,简单容易,看起来易懂,适合初学者,但是我决定还是向高级者进军,努力学号4楼的正则。哈哈。 阿芳,你太靓了,崇拜的你正则 阿芳,你太靓了,崇拜的你正则
leon460 发表于 2010-12-3 13:53 http://www.autoitx.com/images/common/back.gif
纯爷们是也~ {:face (394):} 学习一下。。
页:
[1]