正则表达式提取HTML范围内链接地址URL

2024-11-21 17:31:16
推荐回答(2个)
回答1:

首先你要找特征,这是写正则前必须做的。
一般要匹配HTML中的东西,往往这个HTML的来源是抓取别人的网站,那么你要分析对方网站会变动些什么,比如form是否是唯一的,会不会增加另外一个form,DIV的ID是否会变,DIV的层级是否会变,那些是不会变的,比如div的class名称,或者某些关键字。这是找范围特征。
其次是找链接本身的特征,你要找的链接是否都是超链接,也就是标签
然后更具特征去写正则。

处理方式:
首先获取范围的全部的HTML
其次再匹配其中的链接

我也不知道你用的什么语言,这里我就用我熟悉的PHP给你写下吧.

if (preg_match_all("/\<\bdiv\b[^>]*id\s*=\"1\"[^>]*\>(?.*?)/ies", $html, $matches) {
$html = $matches['content'];

if (preg_match_all("/http\:\/\/[^<>\"]*?\.html/i", $html, $links) {

print_r($links);

}

}

回答2:

如果不是最里层的div的话,事实上是没有办法提取里面内容的。即便你以


......
.....
.....
.........
....


...................


这种情况你怎么办?所以除非你在十分了解你页面元素分布的情况下,才能按某一项特征值去提取非最内层的div元素,这一点别人帮不到你。