スクレイピング(PHP版)

スクレイピングについて

他のサイトに掲載している情報を取得する事をスクレイピングといいます。
今回はPHPを使い、データを取得し料理していこうと思います。

注意事項としまして、スクレイピングで取得する場合、対象となるサーバーに意図しない負荷を与えてしまう影響が出ます。
ご利用の際は、対象サイトの利用ルール、免責事項等に目を通し、迷惑をかけて不利益になるような事にならないよう注意していただく必要があります。
(故意ではなくとも立て続けにサーバーにアクセスするDos攻撃とみなされ、個人だけではなく不特定多数のサイト利用者が困る可能性もありますのでご配慮の上ご利用下さい。)

用意するもの

・phpQuery本体

phpQueryをダウンロードページから取得してきます。
https://code.google.com/archive/p/phpquery/downloads

・抽出したいページのURL

今回は気象庁のページから取得を行ってみます。
http://www.jma.go.jp/jp/week/

では練習

スクレイピングの練習として、気象庁のtitleタグを取得してみます。

サーバーに、ダウンロードしてきたphpQuery(phpQuery-onefile.php)を配置します。

自分のサイトに下記PHPを書き込みます。
※phpQuery-onefile.phpの配置と、対象のサイトURLを入れます。

require_once('phpQuery-onefile.php');
    $html = file_get_contents('http://www.jma.go.jp/jp/week/');
    $doc = phpQuery::newDocument($html);
    echo '[title]';
    echo $doc["title"]->text();


// その他 取得したいタグ等もおまけで持ってきてみる、(無いものは空)
    $tags = get_meta_tags('http://www.jma.go.jp/jp/week/');
    echo '<br />[author]';
    echo $tags['author'];

    echo '<br />[keywords]';
    echo $tags['keywords'];

    echo '<br />[description]';
    echo $tags['description'];

    echo '<br />[geo_position]';
    echo $tags['geo_position'];

結果

結果はこちらのページ