友之介的つぶやきブログ

PCやらプログラムやらぶつぶつ言ってます

ホームページの情報を取得

以前からホームページの情報を取得するのに、pythonのurllibを使っていたのですが、
最近javascriptを使ったサイトが多く、簡単に情報を取得できなくなってきました。

そこで、ネットで調べたところ、python+selenium+PhantomJSを使うと
javascriptを使ったサイトも簡単に取得できるみたいですね。
試しに、簡単なスクリプトで実験。

 

 
#!/usr/bin/python
from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get('http://www.yahoo.co.jp/')
print driver.title
driver.quit()


PhantomJSは、ヘッドレスのブラウザなのでcuiには向いてそうです。

これで解決と思ったのですが、サイトによってはPhantomJSに対応してない所もあるようですね。
ここがマイナーなブラウザの欠点といったところでしょうか。

仕方ないので、スクリプトのPhantomJSをFirefoxに変更し、firefoxで取得するように変更。
今度は、無事取得は出来ましたが、ブラウザが画面に表示されるのが邪魔です。

で、ネットでfirefoxをヘッドレスで起動できないか調べてみると。
xvfbを使う方法が。
xvfbは名前の通り、仮想フレームバッファのX(画面のないX?)なので、ここで起動すれば画面は表示されません。
debianから使うには、xvfb-runを使うようなので。

xvfb-run python test.py

と、実行。
画面にも取得されず、欲しい情報が取得出来ました。