移動式のブログ

ガジェット、アニメ、プログラミング、考えたことその他色々・・・特にこれといったテーマはないカオスなブログです。

スクレイピング的なことがしたいならphpQuery

PHPでWEBサイトの内容を収集する

f:id:idoushiki:20180222203944p:plain



スクレイピングとは、サイトの内容を抽出して、整形することだ。
例えば、特定のニュースサイトの見出しの文章だけを全て抜き出して集めるとか、このブログの記事の本文を抜き出して集めるとかそんな感じだ。

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();