2012-04-13 16 views
1

lxmlとpythonを使用してページをスクラップしています。ページへのリンクはHEREです。今直面している問題は、タグ内の属性を取得する方法です。ページの上部にある3ゴールドの星は、例えば、彼らは、HTMLここScrapping:<abbr>タグで属性を取得する方法

<abbr title="3" class="average rating large star3">★★★☆☆</abbr> 

を持っている私は、この場所はどのように多くの星を取得したのを知っているように、タイトルを取得したいです。私はこれを含め、物事のカップルをやって試してみました

response = urllib.urlopen('http://www.insiderpages.com/b/3721895833/central-kia-of-irving-irving').read() 
mo = re.search(r'<div class="rating_box">.*?</div>', response) 
div = html.fromstring(mo.group(0)) 
title = div.find("abbr").attrib["title"] 
print title 

しかし、私のために動作しません。ヘルプをいただければ幸いです。

答えて

4

Don't use regex to extract data from html.あなたはlxmlを使用しています。電源は(XPath)です。

>>> import lxml.html as html 
>>> page = html.parse("http://www.insiderpages.com/b/3721895833/central-kia-of-irving-irving") 
>>> print page.xpath("//div[@class='rating_box']/abbr/@title") 
['3'] 
+2

あなたの方が優れています。私はlxmlがページ自体を取得できるのか分からなかった。 – WooParadog

+0

Thanx !!!非常にエレガントなソリューション –

2

xpathを試しましたか?

In [38]: from lxml import etree 

In [39]: import urllib2 

In [40]: html = etree.fromstring(urllib2.urlopen('http://www.insiderpages.com/b/3721895833/central-kia-of-irving-irving').read(), parser) 

In [41]: html.xpath('//abbr')[0].xpath('./@title') 
Out[41]: ['3'] 
関連する問題