データベースに保存するさまざまなトピックに関するデータを ehow.com から抽出したいと考えています。問題は、この Web サイトから情報を取得するためにふるいにかけなければならない Web ページが複数あることです。多数の Web ページを調べて必要なデータを取得するには、SimpleHTMLDOM のようなスクレーパーを使用しますか?それとも Web クローラーを使用する必要がありますか?
3 に答える
まず、eHow.comでそれを行うことが許可されているかどうかを検討してください。ここで説明した方法ではそれができなかったと思います。
とにかく、あなたの質問に関して:
Crawler
ページからページへ、および/またはウェブサイトからウェブサイトへ移動しParser
、ページのコンテンツを解析して、ニーズに合った再利用可能な方法で保存します。これを行うには、両方が必要であるか、パーサーのURLを手動で指定する必要があります。
アップデート:
についての有用なリンクCrawler
:
Web クローラーは、リンクをたどってページを自動的に取得するためのパーサー (SimpleHTMLDOM など) の単なるラッパーです。
あなたはそれをする必要がありますか?
いずれの場合も、eHowの利用規約では、自動化された手段を使用してサイトにアクセスすることは禁じられています。
独自のクローラーを比較的簡単に構築できます...
PHPでは、たとえば...
<?php
$lines = file('http://www.example.com/');
// i think here you either implode or explode the $lines by "" cannot remember which
// Loop through our array, show HTML source as HTML source; and line numbers too.
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
preg_match_all("/<h2>(.*)<\/h2>/i",$lines,$array_of_contents);
$page_title = $array_of_contents[0][1];
if($page_title == "Technology"){
// run a function here to do something with links found on this page...
}
?>
PHP.ini で有効にする必要があるかもしれませんが、file() の代わりに CURL を使用することをお勧めします。以前に別の Web サイトでこれを行ったことがありますが、かなりうまく機能します。興味深いリンクが見つかったら、それらをデータベースに追加し、必要なリンクがすべて見つかるまでクロールを続けてから、別のクラスなどを使用して、収集された URL でデータを処理/スクレイピングします...