我一直想知道如何做这样的事情。我不是网站的所有者/管理员/网站站长(http://poolga.com/),但我希望获得的信息是公开的。此页面(http://poolga.com/artists)是为该网站贡献的所有艺术家的目录。但是,此页面上的链接转到另一个页面,其中包含此锚标记,其中包含艺术家实际网站的链接。
<a id="author-url" class="helv" target="_blank" href="http://aaaghr.com/">http://aaaghr.com/</a>
我讨厌必须命令+点击目录中的链接,然后点击艺术家网站的链接。我希望有一种方法可以将一批10个艺术家网站链接显示为浏览中的标签,仅供临时查看。然而,将这些href变成某种阵列本身就是一项壮举。任何编程语言中的任何想法或方向/谷歌搜索都很棒!这甚至会被称为“爬行”吗?谢谢你的阅读!
更新
我使用这个脚本在我的本地php MAMP服务器上使用了Simple HTML DOM,花了一点时间!
$artistPages = array();
foreach(file_get_html('http://poolga.com/artists')->find('div#artists ol li a') as $element){
array_push($artistPages,$element->href);
}
for ($counter = 0; $counter <= sizeof($artistPages)-1; $counter += 1) {
foreach(file_get_html($artistPages[$counter])->find('a#author-url') as $element){
echo $element->href . '<br>';
}
}
答案 0 :(得分:3)
我最喜欢的浏览dom的php库是Simple HTML DOM。
set_time_limit(0);
$poolga = file_get_html('http://poolga.com/artists');
$inRefs = $poolga->find('div#artists ol li a');
$links = array();
foreach ($inRefs as $ref) {
$site = file_get_html($ref->href);
$links[] = $site->find('a#author-url', 0)->href;
}
print_r($links);
我认为代码非常明显。
编辑:有拼写错误。脚本需要花费很长时间才能完成,看看有多少链接;这就是我使用set_time_limit()的原因。去做其他的事情让脚本运行。
答案 1 :(得分:1)
使用一些函数循环播放艺术家子页面(以jQuery为例):
$("#artists li").each();
(每个条目都位于<li>
内的<div id="artists">
)
然后,您必须阅读每个页面搜索元素<div id="artistSites">
或<h2> id="author">
$("#author a").href();
实施细节将取决于每个页面的不同程度。我只看了两个,所以它可能比这复杂一点。