【phpQuery】で簡単WEBスクレイピング!をしてみた。【phpQuery】で簡単WEBスクレイピング!をしてみた。【phpQuery】で簡単WEBスクレイピング!をしてみた。株式会社パーソンリンクTweetPocketGWも終わってしまい、なんと6月は祝日がありません!7月の海の日まで祝日が無い絶望感に包まれた時にエンジニアがやりたくなる事と言えば・・・そう!WEBスクレイピングですね!今回はPHPで手軽にスクレイピングする方法を書いていきます。仕事の8割は検索と徘徊に費やす系エンジニア田中です。「スクレイピング」とか「クローリング」って何?そもそもスクレイピングとは何なのか?Google翻訳さんによると「こすること」と出ます。ちなみに「クローリング」は「巡回すること」です。イメージとしては、WEB上にあるHTMLコンテンツを「クローリング(巡回)」して、欲しい情報を「スクレイピング(擦り取る)」という感じです。「抽出」にあたる「Extract」とかを使わない辺りが、エンジニアの執念の垣間見える作業だということを物語っていますねw用意するものPHPが使えるネットに繋がる優秀な頭脳これだけあればスクレイピングの準備はばっちりです。参考にするサイト今回はPHPでjQueryっぽくHTMLを操作出来る「phpQuery」を使います。https://code.google.com/p/phpquery/ソースを取ってくるphpQueryを使うのはとっても簡単です。ソースを取ってきてrequire_once("phpQuery-onefile.php");で完了です。https://code.google.com/p/phpquery/downloads/listここの中の最新の「phpQuery-*.*.*.*-onefile.zip」をクリックします。https://phpquery.googlecode.com/files/phpQuery-*.*.*.*-onefile.zipでzipを取ってきます。phpQuery-*.*.*.*-onefile.zipそうすると「phpQuery-onefile.php」というファイルが出来ているのでこれでOKです。使ってみる今回は弊社ブログ記事のタイトルと中の小見出しを抽出してみます。各記事のリンク先を抽出します。https://person-link.co.jp/これを取ってくるのは便利な「file_get_contents」という関数です。ローカルにあるファイルはもちろん、URLを引数に渡してあげるとHTMLを取得する事が出来ちゃういます。第二引数にプロキシを設定する事も出来ますが今回は割愛です。詳しくは公式リファレンスにてご確認下さい。phpQuery::newDocument($HTMLData);?>とりあえずこんな感じです。あとは$phpQueryObjからjQueryっぽくDOMを取得してくるだけです。pq($val)->find('a')->attr('href').PHP_EOL;}?>今回地味にはまったのがここです。取得してきた$titleArrの要素はDOMElementとして認識されていて、phpQueryの支配下から外れてしまうんですね。http://php.net/manual/ja/class.domelement.phpなのでphpQueryのメソッドを使える様に「pq()」メソッドで再定義してあげた上で中の要素を取得する、という小技が必要でした。PHP_EOL;}}?>関数の呼び出し元のforeachの中に書いてある「sleep(5)」はとても大切で、弊社のHPのように弱小インフラで運用しているサービスは、連続で多数のリクエストを要求されると簡単にぶっ飛びますw本当は外に出した関数の中でechoするのは好ましく無いとか変数名が雑とか色々ありますが、個人の趣味程度であればこれで勘弁して欲しいところですw悪用は厳禁なんだよ!情報を素早く集めるために、WEBを使いプログラムを使い、とても便利な世の中になりましたが、もちろんこれは人類の文化的な発展のために作られたものですので、XXXがXXXをXXXするために使ったりしたらいけないんです!連続リクエストによって偽計業務妨害容疑で逮捕されたという事件がありますので、本当にリクエストの回数と間隔にはお気を付け下さいませ。Wikipedia秒間1リクエストまでになるように考慮してもサーバーがぶっ飛べば逮捕される恐れがあるということです。長所とし開発を行っております。サーバー構築からコンテンツの作成、データの活用方法の提案まで、ご相談頂ければ納得の回答を差し上げることが出来ると確信しております。お見積もり等のご相談はこちらから。【phpQuery】で簡単WEBスクレイピング!をしてみた。IAPを触ってみる最近の記事もくもくするのは物足りない。そんなあなたに贈る「道玄坂がやがや会」を紹介します。ONプライバシーポリシーTOP。