こんにちは。社内でスクレイピングを担当している五所です。
今回は、PHPのスクレイピングライブラリ「phpQuery」の紹介をしたいと思います。
インストール
下記URLから「phpQuery-x.x.x.386-onefile.zip」をダウンロードし、解凍して出てきたファイルをPHPからrequireするだけです。
Google Code Archive - Long-term storage for Google Code Project Hosting.
ただ、僕が使ったバージョン0.9.5ではタイポがあり
PHP Notice: Undefined variable: hltml in phpQuery-onefile.php on line 517
というエラーが出たので、phpQuery-onefile.phpの517行目にある$hltml
を$html
に修正しました。
「phpQuery」で隣接した要素の取得
基本的な使い方は、下記のサイトを参考にさせて頂きました。感謝。
僕が注目したのは、このライブラリで「隣接した要素(Adjacent Elements)」の取得ができることです。
「隣接した要素」とは、下記のようなテーブルで
項目名 | 値 |
---|---|
会社名 | 株式会社クイック |
住所 | 東京都港区赤坂 |
「株式会社クイック」は、jQuery風の書き方では
td:contains('会社名') + td
で取得できます。「会社名」の隣にあるtd
要素ということですね。
「simple_html_dom」というライブラリではこの操作がうまくできませんでした。
phpQueryならできます。
おまけ
上記のことはRubyのgemのMechanizeでも難なくできます。
社内でRubyが使える環境だったり、これから環境構築を始めたりする場合はこちらの方がお勧めです。
postメソッドやproxy設定が全てMechanizeに集約されているので。