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
- Trackback:
- http://humming.via-kitchen.com/2007/11/14/tried-using-lxml-part2/trackback/
TrackBacks
まだ登録されていません。
Comments
まだ登録されていません。