netsmu 发表于 2010-11-24 11:03:22

[已解决]求获取某个网页部分内容的正则表达式。

本帖最后由 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)

非常感谢各位坛友的帮助。

netsmu 发表于 2010-11-24 16:20:15

贴上部分网页源码如下:
<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>&nbsp;&nbsp;歌手:<a href="./?f=1&ar=%B7%EF%BB%CB%B4%AB%C6%E6">凤凰传奇</a></strong></div>
                        <div id="al">
                                <strong>&nbsp;&nbsp;专辑:</strong></div>
                        <div id="show">
                                <strong>&nbsp;&nbsp;显示:</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>&nbsp;&nbsp;下载:</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:23:27

本帖最后由 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

afan 发表于 2010-11-24 22:35:52

两次正则即可:
1,替换掉可能有的颜色高亮标签,使之后的匹配不用再判断处理
StringRegExpReplace('源码字符', '</span>', '')
2,一次匹配所有的歌名、歌手、下载地址
StringRegExp('上次处理后的源码', '(?s)id="ti".+?([^><]+)</a><.+?id="ar".+?([^><]+)</a><.+?id="down".+?href="([^"]+)[^>]+>LRC', 3)

netsmu 发表于 2010-11-25 09:05:38

afan 我太爱你了。{:face (88):}

bakefish 发表于 2010-11-25 09:38:12

学习了,谢谢

netsmu 发表于 2010-11-25 09:38:48

本帖最后由 netsmu 于 2010-11-25 09:39 编辑

仔细研究了一下3楼的方法,简单容易,看起来易懂,适合初学者,但是我决定还是向高级者进军,努力学号4楼的正则。哈哈。

leon460 发表于 2010-12-3 13:53:12

阿芳,你太靓了,崇拜的你正则

afan 发表于 2010-12-3 15:20:05

阿芳,你太靓了,崇拜的你正则
leon460 发表于 2010-12-3 13:53 http://www.autoitx.com/images/common/back.gif


    纯爷们是也~ {:face (394):}

冷月無聲 发表于 2010-12-3 15:51:35

学习一下。。
页: [1]
查看完整版本: [已解决]求获取某个网页部分内容的正则表达式。