スクレイピング的なことがしたいならphpQuery
PHPでWEBサイトの内容を収集する
スクレイピングとは、サイトの内容を抽出して、整形することだ。
例えば、特定のニュースサイトの見出しの文章だけを全て抜き出して集めるとか、このブログの記事の本文を抜き出して集めるとかそんな感じだ。
PHPでスクレイピングできるライブラリで、phpQueryがある。
以下のリンクから、phpQueryのファイルをダウンロードすることができる。
Google Code Archive - Long-term storage for Google Code Project Hosting.
単純に、特定のサイトの情報を抜き出して表示するだけなら三行のコードで実現できる。
require_once("phpQuery-onefile.php");
まず、一行目でphpQuery-onefile.phpのファイルを配置した場所を指定する。
今回は、実行するプログラムのファイルと同じフォルダ内に配置した。
$html=file_get_contents("http://idoushiki.hatenablog.com");
二行目で、スクレイピングしたいサイトのURLを指定する。
echo phpQuery::newDocument($html)->find("body")->text();
三行目に、find("body")でサイト内の
<body>
を指定して、echoでその内容を出力する。
三行目について、サイトの
<head>
内の内容を取集したい場合は、
phpQuery::newDocument($html)->find("head")->text();
サイトの
<body>内の<div class="baka">内の内容
を取得したい場合は
phpQuery::newDocument($html)->find("body")->find(".baka")->text();
単に、
<body>
内にあるdivの内容を取得したい場合はfind("div")のように書く。
phpQuery::newDocument($html)->find("body")->find("div")->text();