Simple HTML DOM を使用して一部の Web サイトからのリンクをクロールしていますが、多くの Web サイトが完全な URL ではなく相対リンクを使用しているという問題に遭遇しました。
そのため、リンクをクロールして自分の Web サイトに直接出力しますが、各リンクはwww.crawleddomain.com/somearticleではなくwww.mydomain.com/somearticleにつながります。
掘り下げてみたところ、BASEタグについて知りました。複数のサイトからクロールしているため、出力ごとに変更されるため、Web サイトのベースタグを設定することはできません。そのため、特定のdivのみにベースタグを付けるように検索していました。私はこの答えに出くわしました。
ただし、以下のようにベース URL を手動で含めようとしましたが、うまくいきませんでした。
echo ('http://www.baselink.com/' . strip_tags($post, '<p><a>'));
関数を使用して2番目のオプションも試しました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>