2011年1月アーカイブ

Beautiful Soupを普段使っているのですが、lxmlの方がパフォーマンスがよいとのことなので挑戦してみました。

lxmlの使い方はThe lxml.etree Tutorialを読んだのですが、そこにetree.parse()の引数にURLを指定可能とあります。が、どうも日本語が化けちゃうんですよね。

で、調べてみたら、unicode化してから、etree.fromstring()でパースすればいいんですね。

# coding:utf-8

from lxml import etree
import urllib2

def main():
    url = r"http://www.amazon.co.jp/s/?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Daps&field-keywords=%90%B3%93%9D%93I%8E%FC%95%D3%8EQ%89%C1&x=0&y=0"
    user_agent_str = u"Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"
    opener = urllib2.build_opener()
    opener.addheaders = [(u'User-agent', user_agent_str)
                                        ,(u'Referer', u'http://www.amazon.co.jp')]
    page = opener.open(url)
    charset = page.headers.getparam('charset')
    html_data = unicode(page.read(), charset)
    et = etree.fromstring(html_data, parser=etree.HTMLParser())
    for elem in et.xpath("//div[@class='title']"):
        print etree.tostring(elem, method="text", encoding="utf-8").strip()

if __name__ == '__main__':
	main()

このアーカイブについて

このページには、2011年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年12月です。

次のアーカイブは2011年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.27-ja