繁体   English   中英

更改已爬网链接的基本URL

[英]Changing the Base URL for crawled links

我正在从一些具有简单HTML DOM的网站上爬取链接,但是我遇到了很多网站使用相对链接而不是完整URL的问题。

因此,发生的事情是我搜寻了这些链接,并将它们直接输出到我的网站上,但是每个链接都指向www.mydomain.com/somearticle而不是www.crawleddomain.com/somearticle

我做了一些挖掘,发现了BASE标签 由于我从多个站点进行爬网,因此我不能只为我的网站设置基本标记,因为它会随着输出的变化而变化。 因此,我正在搜索仅具有特定div的基本标签。 我偶然发现了这个答案

但是,我尝试手动添加如下所示的基本url,但这没有用:

echo ('http://www.baselink.com/' . strip_tags($post, '<p><a>'));

我还尝试了第二种方法, correct_urls($html, $baseurl);correct_urls($html, $baseurl); 功能,但显然不存在。

有没有办法在PHP的for循环中将基本URL更改(或附加)到相对URL?

这是输出

这是我正在使用的代码:

<div class='rcorners1'>
<?php
include_once('simple_html_dom.php');

$target_url = "http://www.buzzfeed.com/trending?country=en-us";

$html = new simple_html_dom();

$html->load_file($target_url);

$posts = $html->find('ul[class=list--numbered trending-posts trending-posts-now]');
$limit = 10;
$limit = count($posts) < $limit ? count($posts) : $limit;
for($i=0; $i < $limit; $i++){
  $post = $posts[$i];
  $post->find('div[class=trending-post-text]',0)->outertext = "";
  echo strip_tags ($post, '<p><a>');  
}
?>
</div>
</div>

您需要一个将相对href转换为绝对href的库

然后执行以下操作:

include_once('phpuri.php');

$uri = phpUri::parse($target_url);

foreach($html->find('a[href]') as $a){
  $a->href = $uri->join($a->href);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM