PHPのsimple_html_domでスクレイピングするとき「file_get_html」ではなく「Curl」を使ったら取得実行時間が半分(2倍速)になった
cURL(カール)を使いこなしている人からしたら「当たり前のこと」なのだろう。
人様のコードをコピペしただけなので理屈でもって説明できない。(理解していない)
が、たしかに自分の実行環境では実行時間が半分(2倍の早さ)になった。
キャッシュじゃない。何度も確かめたけど結果はおなじ。驚いた。
参考にしたサイト
きっかけは、以下のブログ記事。ユーザー関数。
・PHPメモ : file_get_contentsの代替にcURLを使う – Mach3.laBlog
おれがスクレイピングに利用していたのは「file_get_html」という「simple_html_dom.php」のヘルパー関数。
おれのケースの場合、「file_get_html」と「file_get_contents」を比べるのは、そもそも間違っているのだのだが、とにかく「Curl」で取得したほうが速いらしいというのを聞きつけた。やってみたくなった。
・cURLの挙動について調査 –file_get_contents()との比較- | e2esound.com業務日誌
で、いろいろ調べたら、海外サイトに良いコードがあったので丸々っとコピペ。
・how to use CURL and PHP Simple HTML DOM Parser with object - Stack Overflow
$urlが、スクレイピング先のURL、
$data が、simple_html_domで本来file_get_htmlしたときに生成されるDOMオブジェクトになる。
自分のスクレイピングコード用に「変数名」と「ユーザーエージェント部分」をカスタマイズして実行したら、うまく動いた。そして、2倍速い。シャアザクには及ばないものの、ありがたや。