勉強の為に一部引用しました。
http://qiita.com/ka215/items/79c30e9c15ae0462f457
コーディングのし易さでも、phpQuery
の方がコード量が少なくて済むので扱い易い印象があった。 Goutte
では名前空間を利用しているので、グローバル空間側で定義した変数などを Client
クラスに受け渡す場合や、 Client
クラス内のメソッドへ変数を受け渡す時などに、リファレンス扱いで参照渡ししないとそれぞれの名前空間のスコープで変数が共存できなかったりしてちょいと面倒だな…と感じた次第。まぁ、この辺は好き嫌いの範疇だなぁ…。
特筆すべき点としては、スクレイピング元のURLからファイルを取得する処理の差だろうか。というのも、 Goutte
では専用の request()
メソッドがあって、そこではGET
以外にPOST
メソッドタイプにてファイル取得ができる点が優れている。これによってSubmit後にしか表示できないようなURLにも対応できる可能性があるのだ。一方で、 phpQuery
ではファイル取得はライブラリに依存しない形で別途コーディングしないといけない。例では file_get_contents()
関数で取得しているが、POSTメソッドを指定してアクセスしたい場合などは結構手間が増えるかもしれない。
というわけで、使用メモリを比較した結果は、圧倒的に phpQuery
の勝ちですな。Goutte
でのスクレイピングは2MB程度のメモリを食うが、 phpQuery
はその半分以下のメモリでサクサク動いているという感じ。
総評
なかなか甲乙付けがたい結果ではあるんだが、あえて判定するなら、スクレイピング・ライブラリとしては
phpQuery
が僅差で勝ちって感じかなぁ。あくまで私の主観での総評になるが、比較結果は下記のようになるかと。- 導入敷居の低さ: phpQuery > Goutte (依存系ライブラリがなく、素で対応するPHPバージョンが多い)
- コーディング: phpQuery ≒ Goutte (コード量では
phpQuery
だが、機能面ではGoutte
の方がやや優秀か) - パフォーマンス(処理時間): phpQuery < Goutte (今回は総処理時間で
Goutte
に分があったが、コンテンツ捜査処理いかんでは逆転するリスクを含んでいる) - パフォーマンス(使用メモリ): phpQuery > Goutte (使用メモリ効率として97%の
Goutte
は無駄がなくて良いのだが、総メモリ使用量と各プロセスにおける割り当てメモリの分配の仕方はphpQuery
の方が優秀だった)
どっちを使うかは好み次第だなぁ…。
ちなみに私は、jQuery好きなこともあるし、使用メモリ量が少なくて済む
ちなみに私は、jQuery好きなこともあるし、使用メモリ量が少なくて済む
phpQuery
を選ぼうかと。
0 コメント:
コメントを投稿