SlideShare a Scribd company logo
クローラを作る技術と設計PHP でやるお(^ω^)
目次スクレイピングの技術XPath正規表現サーバーの設計
XPathXML や HTML の任意の位置を取得するための式XPathエンジンがあれば、 XPathを指定して HTML 上の値を簡単に持ってこれる
XPath<?php$url = 'http://www.nicovideo.jp/';libxml_use_internal_errors(true);$doc = new DOMDocument();$doc->loadHTML(file_get_contents($url));libxml_clear_errors();$xpath = new DOMXPath($doc);foreach ($xpath->query('//a') as $node) { echo $node->textContent . "";}
XPath練習ニコニコ動画の動画再生数とコメント数をスクレイピングしてみよう
正規表現任意の文字列に対して、指定したパターンにマッチしているかを試すパーサーではないので、構造を持ったデータには弱い構造を持たないフラットなデータに良い。トークナイザバリデータオートマトンを描くと理解しやすい
正規表現$reg = '/s?https?:[-_.!~*'()a-zA-Z0-9;?:@&=+$,%#]+/u';if (!preg_match($reg, $str)) { throw new Exception('URL is invalid!');}1s-_.!~*'()a-zA-Z0-9;?:@&=+$,%#s11://http222← これは優先順位X
正規表現練習Apache のログファイルから、 IP アドレス別アクセス数を出してみよう
クローラの設計リクエスト時にクロールする定期的にクロールするジョブキューを使う
リクエスト時にクロールする2インターネット1ウェブサーバ3
定期的にクロールするインターネットデータベースサーバウェブサーバクローラサーバ
ジョブキューを使うインターネットデータベースサーバデータウェブサーバjobjobjobクローラサーバ
プロセス管理crondaemon
cron定期的にプログラムを実行
とても簡単
コマンドラインで動くプログラムをそのまま使えるcron$ vim crontab.txt12 4 * * * php /home/user/crawl_user_page.php34 5 * * * php /home/user/crawl_top_page.php$ crontab < crontab.txt
daemonバックグラウンドで起動するプログラム親プロセスを持たない起動方法、終了方法を準備する必要があるdaemon 用にプログラムを書かなければいけない

More Related Content

クローラを作る技術と設計 (毎週のハンズオン勉強会資料)