1

したがって、すべてのtd class = "banana"内のすべてのタグを取得したいのですが、このtdに「Today」というテキストが含まれている場合に限ります。

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'内のすべてのリンクが返されます。

4

1 に答える 1

3

例がなければ正確な答えを出すのは難しいですが、そのようなものでうまくいくはずです。

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>]
于 2012-11-13T07:30:40.403 に答える