0

我正在开发 Music Downloader 应用程序,因为我必须阅读网站的整个网页,然后需要显示它的结果。所以我阅读了整个网络的源代码。现在歌曲名称和 URL 可以在 html 页面中如下所示:

HTML 代码:

<div id="right_song">
    <div style="font-size:15px;"><b>Name of song</b></div>
    <div style="clear:both;"></div>
    <div style="float:left;">
    <div style="float:left; height:27px; font-size:13px; padding-top:2px;">
    <div style="float:left;"><a href="link of song" rel="nofollow" target="_blank" style="color:green;">Download</a>

所以我想到了使用这个模式,然后匹配它来获取名称和 URL。

我制作的图案如下:

<div id=\"right_song\">
<div style=\"font-size:15px;\"><b>([^<]*)</b></div>
<div style=\"clear:both;\"></div>
<div style=\"float:left;\">
<div style=\"float:left; height:27px; font-size:13px; padding-top:2px;\">
<div style=\"float:left;\"><a href=\"([^\"]*)\" rel=\"nofollow\" target=\"_blank\" style=\"color:green;\">Download</a>

但它总是以未找到模式返回,所以我哪里出错了。

请指导我使其完美。

4

1 回答 1

0

纯粹基于示例。似乎是终止线问题 + SO 的 4 个空格引号..

/<div id=\"right_song\">[\r\n\t\ ]+<div style=\"font-size:15px;\"><b>([^<]*)</b></div>[\r\n\t\ ]+<div style=\"clear:both;\"></div>[\r\n\t\ ]+<div style=\"float:left;\">[\r\n\t\ ]+<div style=\"float:left; height:27px; font-size:13px; padding-top:2px;\">[\r\n\t\ ]+<div style=\"float:left;\"><a href=\"([^\"]*)\" rel=\"nofollow\" target=\"_blank\" style=\"color:green;\">Download</a>/

但是有一种更短/更安全的 grep'ing 模式方式,它允许第 3 方更改微妙的 css 细节

/<div[^>]+>[\r\n\t\ ]+<div[^>]+><b>([^<]*)</b></div>[\r\n\t\ ]+<div[^>]+></div>[\r\n\t\ ]+<div[^>]+>[\r\n\t\ ]+<div[^>]+>[\r\n\t\ ]+<div[^>]+><a href=\"([^\"]*)\"[^>]+>Download</a>/
于 2013-07-16T06:10:37.397 回答