使用lxml,找到所有td class ='banana',但前提是它们包含文本“Today”

时间:2012-11-13 07:20:10

标签: python lxml

所以我想在所有td class =“banana”中获取所有标签,但前提是此td包含“今天”文本

import lxml.html
html = lxml.html.parse("http://www.sitetoscrape.com/")
a = html.xpath('//td[@class="banana"]//text[@text="Today"]//a')

print a

这会返回一个空列表,如果我取出“// text [@ text =”Today“]”它可以工作,但我收回所有td class ='banana'中的所有链接

1 个答案:

答案 0 :(得分:4)

如果没有一个例子,很难给出准确的答案,但是这样的事情应该这样做。

import lxml.html as lh

html="""\
<html>
<body>
<h1>My First Heading</h1>
<td class="banana">
<a>today</a>
<a></a>
<a></a>
</td>
<td class="banana">
<a>bar</a>
<a></a>
<a></a>
</td>
</body>
</html>"""

doc=lh.fromstring(html)

doc.xpath('.//td[contains(.,"today") and @class="banana"]/a')
Out[145]: [<Element a at 1c348b8>, <Element a at 1c34ae8>, <Element a at 1c34c00>]