読者です 読者をやめる 読者になる 読者になる

スクレイピングするのに調べたことまとめておく

はじめに

最近スクレイピングするスクリプトを書く機会があったので次回のためにメモしておく。

・主にHTMLでコンテンツが作られているページ。
Javascriptでページを生成しているページ。
この2パターンに対応する必要があった。後者に対応しておけば前者もカバーできるのでいいかな。

で、調べるとPhantomJS、Seleniumあたりがたくさん出てきた。
ブラウザを操作してページを取得してくるようなイメージ。

・PhantomJS
npmでインストールできるのでセットアップが簡単。
PHP PhantomJSというライブラリもあってPHPからも使える。ページへ遷移してHTMLを取得してくるような簡単な処理ならすぐ実装できる。
ただ、サイトにログインとかして何かやるようにちょっと複雑なことをする場合はJavascriptで処理を書いてPHPからそのコマンドを叩くような処理になるのかなと思った。
しかもちょっと難しく感じた。。。

Selenium
自分の理解不足もあるが、セットアップがちょっと面倒だった。
今回やりたかったことはPhantomJSでほぼできたのであまり使わなかった。

・CasperJS
内部的にはPhantomJSを使ってるみたいだけどより簡単に色々できるみたい。
PhantomJS難しくかんじたけどCasperJSの方が簡単にいじれる印象でやりたいこともできた。

実装の方針

取得したHTMLやHTMLの解析結果はDBへ保存する必要があった。
PhantomJSやCasperJSからDBへ登録できるかできないはわからないけど、それはせず。

1. PHPで取得したいURLのリストをファイルへ出力。
2. PantomJSやCasperJSでそのURLリストファイルを読み込んでサイトにアクセスして取得したHTMLをファイルへ出力。
3. PHPで2.の結果ファイルを読み込んでsimple_html_domで解析してDBへ保存

simple_html_domは読み込みサイズの上限があるので解除しておいた方がよさそう。

例)サイズは適当

define('MAX_FILE_SIZE', 600000*10);

結論

PHPとCasperJS使うのが1番簡単そう。やりたいこともできた。以上です。