PyQuery を使ってみる

前回の続き。

PhantomJS + selenium を使ってみる - goodbyegangsterのブログ

取得したhtmlソースを解析する方法として、PyQueryかBeautifulSoupを利用する方法があるようです。ネット上でのコメントを読む限り、どっち使っても結局変わらないよ。ただし、PyQueryはJqueryと同じようなAPIを提供してくれるので、とっかかりやすいよ、と。BeatifulSoupだと、新たにメソッド名とか覚える必要あるから、そらならPyQueryでいいんじゃね、って感じの意見が多いです。

ということで、PyQueryを利用して解析していきます。

以下URLはマニュアル。これ読めばおおよそ書けます。

pyquery: a jquery-like library for python — pyquery 1.2.4 documentation

解析の前段階として、selenium+PhantomJSで仮想ブラウザを作成してyahoo japanにアクセスするの、PhantomJSからhtmlソースを渡してPyQueryオブジェクトを作成。

import os
from selenium import webdriver
from pyquery import PyQuery

browser = webdriver.PhantomJS(service_log_path=os.path.devnull)
browser.get("http://www.yahoo.co.jp/")
d = PyQuery(browser.page_source)

オブジェクトができれば、APIがたくさん用意されているので、マニュアルを参考に書いてあげればOK。

以下の例はトップページの記事一覧を表示をする処理。

for item in d.find("div.topicsindex").find("li").items():
    item.text()

'台風 あす西日本中心に大荒れ 写真'
'福島原発 国費8兆円増求める 写真'
'毒ぶどう酒 無罪訴え新証拠 動画'
'鍵番号で合鍵作り侵入 男逮捕 写真 NEW'
'ヒトラー発言 比記者に中傷 写真 NEW'
'シャラポワ 処分15カ月に短縮 写真'
'J1磐田 不倫報道の選手に罰金 写真 NEW'
'ミス慶應2016中止 運営不祥事'
'もっと見る'
'記事一覧'

結構さくさく情報取得できましたね。便利です。