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

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)