1

私はlxmlとpythonを使用してページをスクレイプしています。このページへのリンクはこちらです。私が今直面している問題は、タグ内の属性を取得する方法です。たとえば、ページの上部にある3つのゴールドスターには、htmlがあります。

<abbr title="3" class="average rating large star3">★★★☆☆&lt;/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

2 に答える 2

4

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']
于 2012-04-13T06:50:01.717 に答える
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']
于 2012-04-13T06:52:11.880 に答える