2

このライブラリを初めて使用し (悲しいことに、BeautifulSoup にも慣れていません)、非常に単純なことをしようとしています (インライン スタイルで検索):

<td style="padding: 20px">blah blah </td>

style="padding: 20px" のすべての tds を選択したいだけですが、理解できないようです。すべての例は、次のように td を選択する方法を示しています。

for col in page.cssselect('td'):

しかし、それはあまり役に立ちません。

4

3 に答える 3

4

もっと良い方法があります: XPath です。

import lxml.html
data = """<td style="padding: 20px">blah blah </td>
<td style="padding: 21px">bow bow</td>
<td style="padding: 20px">buh buh</td>
"""
doc = lxml.html.document_fromstring(data)
for col in doc.xpath("//td[@style='padding: 20px']"):
    print col.text

それはよりきちんとしていて、より速いです。

于 2010-04-12T03:21:52.263 に答える
3

CSS セレクターを使用する場合:

import lxml.html
data = """<td style="padding: 20px">blah blah </td>
<td style="padding: 21px">bow bow</td>
<td style="padding: 20px">buh buh</td>
"""
doc = lxml.html.document_fromstring(data)
for td in doc.cssselect('td[style="padding: 20px"]'):
   print td.text
于 2010-04-12T05:00:51.423 に答える
2

Ruslan Spivaknoskloの両方が以下により良い回答を提供していることに注意してください。


import lxml.html
data = """<td style="padding: 20px">blah blah </td>
<td style="padding: 21px">bow bow</td>
<td style="padding: 20px">buh buh</td>
"""
doc = lxml.html.document_fromstring(data)
for col in doc.cssselect('td'):
    style = col.attrib['style']
    if style=='padding: 20px':
        print(col.text.strip())

版画

blah blah
buh buh

なんとかスキップしbow bowました。

于 2010-04-12T02:40:43.537 に答える