PHPで簡単にスクレイピングする方法part2


みなさんこんにちは、tkです。
前回に引き続きスクレイピングについて紹介します。
具体的にはphpQueryのもう少し実践的な内容に触れていきます。

phpQueryの使用例

セレクタやメソッドなどはjQueryと同様です。
jQueryについてはjQuery日本語リファレンスを参照してください。
例えばこんな感じで使用します。

この時$docはphpQueryObjectクラスのオブジェクトですが、$docの要素である$titlesはDOMElementクラスのオブジェクトなのでpq()によってphpQueryObjectクラスのオブジェクトに指定してください。

CSVから読み込んでみよう

スクレイピングする際は今までのように一つのサイトを対象とするのはあまり考えられないと思うので、CSVファイルを利用して一度に情報を取得してみましょう。
ソースは少し長いですがこんな感じになります。

実行する前にこんな感じでtest.csvを作成してください。(urlは自由に変更してみてください)
CSVの処理についてはSplFileObjectクラスを使用します。
ファイルの処理に特化したクラスという感じです。
この辺りを説明しているととても長くなってしまうのでPHPマニュアルを参照してください。

終わりに

さて、実際にサイトのタイトルが取得できたでしょうか。
ただ、phpQueryだけではすべてのサイトの情報が取得できるわけではありません。
JavaScriptにより動的に値を取得していたり要素を変更している部分の情報は取得できません。
次回はそういった部分のデータもスクレイピングできる方法を紹介します。
お楽しみにしてくれると嬉しいです。

最近PHPによるスクレイピングの内容が書かれている書籍を見つけたので紹介しておきます。
機械学習などのホットな話題にも触れていて単純に読み物としても面白いです。



スクレイピングについての記事をまとめておきます。
PHPで簡単にスクレイピングする方法
PHPで簡単にスクレイピングする方法part3
PHPで簡単にスクレイピングする方法part4

ではでは

ブログランキング
人気ブログランキングへ

tk

こんにちはtkです。長いモラトリアムを経て現在は無職。寝ながらお金を稼げるシステムを作れないかと夢想中。。。。 PHP、Ruby、Javaなんかをいじってたりして、Scala勉強中。趣味は映画・海外ドラマ・読書です。何かオススメあれば是非!

あわせて読みたい

2件のフィードバック

  1. 2017年2月17日

    […] 前回に引き続き、スクレピングについて紹介していこうと思います。 […]

  2. 2017年2月25日

    […] PHPで簡単にスクレイピングする方法part2 PHPで簡単にスクレイピングする方法part3 […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です