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

唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

pyqueryでHTMLからデータを抽出

python

pyqueryjQueryと同様にHTMLの操作ができるPython用のライブラリです。
PythonでHTMLからのデータ抽出といえばBeautiful Soupの名前をよく見かけますが、jQueryを知っている人にはこっちの方が使いやすいと思います。

内部的にはlxmlを使用しているので以下の記事などでlxmlの使い方にも軽く目を通しておいたほうがいいかもしれません。

"pip install pyquery"などでインストールできると思います
動かすにはlxmlが必要になります。入ってない場合にはそちらもインストールが必要かもしれません。
Python 3でも動くらしいです

使い方の簡単な例

PyQueryクラスにHTMLの文字列やURLを与えれば、jQuery風のオブジェクトとして利用できます。
URLの場合にはキーワード引数urlに指定しなければいけません

find関数にCSSセレクタ(要素名とかクラスとかIDとか……)を指定することで簡単に目当ての要素を取得できます。
find関数などの結果のリストの中身はlxmlの要素が返ってくるので、PyQueryの関数を呼びたければ以下の例のようにもう一度PyQueryに引数として渡してから操作します。
あるいはそのままlxmlの関数を呼んでも操作できます。

下のスクリプトはてなブックマークのトップページから、クラスがentry-linkであるa要素を取ってきて記事のタイトル(a要素の中のテキスト)とURL(href属性)を出力しています。

from pyquery import PyQuery
q = PyQuery(url='http://b.hatena.ne.jp/')

for elem in q.find('a.entry-link'):
#PyQuery
    q2 = PyQuery(elem)
    print q2.text()
    print q2.attr('href')
    
#lxml
#    print elem.text
#    print elem.get('href')
-->