lxmlでアンカータグのテキストを取得する
lxmlで、xpathを指定して、アンカータグのテキストを取得するサンプル
test.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 from StringIO import StringIO from lxml import etree def get_a_tag(url): html = urllib2.urlopen(url).read() tree = etree.parse(StringIO(html), etree.HTMLParser()) ts = [t.strip() for t in tree.xpath('//a/text()')] for t in ts: print t if __name__ == '__main__': url = 'http://d.hatena.ne.jp/kuma8/' get_a_tag(url)
アンカータグの一覧をElementオブジェクトで、
取得することもできます。
"findall"を使用すると、Elementオブジェクトのリストを取得できます。
"attrib"で、属性を取得することができます。
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 from StringIO import StringIO from lxml import etree def get_a_tag(url): html = urllib2.urlopen(url).read() tree = etree.parse(StringIO(html), etree.HTMLParser()) ts = tree.findall('//a') for t in ts: print '%s %s' % (t.text, t.attrib['href']) if __name__ == '__main__': url = 'http://d.hatena.ne.jp/kuma8/' get_a_tag(url)