lxmlを試してみたよ。(その2)

前回 に続いて lxml を使って色々やってみたよ。

テスト用のファイルを書くのもメンドクサイので、 このサイトのカテゴリーリストで遊んでみる事にした。

>>> from httplib import HTTPConnection
>>> from lxml import etree

>>> #   とりあえずHTMLを取ってくる。
>>> conn = HTTPConnection('humming.via-kitchen.com')
>>> conn.request('GET', '/')

>>> #   レスポンスをパース。
>>> html = etree.parse(conn.getresponse(), parser=etree.HTMLParser()).getroot()

ここから lxml でサクサク遊んでみる。

>>> #   カテゴリーリストを取ってくる。
>>> html.xpath('//div[@id="subContent"]/ul[@class="cloudList"]')
[<Element ul at 2489f90>]
>>> ul = html.xpath('//div[@id="subContent"]/ul[@class="cloudList"]')[0]

>>> #   リストのリンクを取ってくる。
>>> ul.xpath('./li/a')
[<Element a at 2489fc0>, <Element a at 248f720>, ..., <Element a at 248fe70>]

>>> #   リンクのテキストを取ってくる。
>>> ul.xpath('./li/a/text()')
['ActionScript', 'AIR', ..., 'vim']

テキストを取りたい場合は text() 、 ならアトリビュートはどうやって取るんだろう?と疑問が。

で、色々調べたり試したりした結果、 @ATTRIBUTE で取れるらしいっす。

>>> #   hrefを取ってくる。
>>> ul.xpath('./li/a/@href')
['/weblog/tag/actionscript/', '/weblog/tag/air/', ..., '/weblog/tag/vim/']

>>> #   classを取ってくる。
>>> ul.xpath('./li/a/@class')
['rank9', 'rank2', ..., 'rank2', 'rank8']

これが分かると一気に使い勝手が良くなってきた! もうね、 lxml 素敵。ってか XPath 素敵。

Posted at: 
2007/11/14 03:00:24
0 Comments
0 TrackBacks
Tags: 
lxml
Python
XPath
Trackback: 
http://humming.via-kitchen.com/2007/11/14/tried-using-lxml-part2/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment