用于选择多个HTML`a`元素的XPath

时间:2011-12-01 23:04:32

标签: python xpath lxml

我对XPath很陌生,无法理解其他解决方案。

我要做的是选择给定a内的所有td元素(示例中为td[2])并运行for语句以输出{中包含的文本{1}}元素。

源代码:

a

我是如何使这项工作的指针?

谢谢!

1 个答案:

答案 0 :(得分:3)

你需要的XPath非常接近:

//table[contains(@class, "mg-b20")]/tr[3]/td[2]//a

我不知道您使用的是哪个库,但我怀疑它是Plex Parsekit API。如果是这样,parsekit使用lxml.etree作为其底层库,因此您可以进一步简化代码:

element = HTML.ElementFromURL(url)
alltext = element.xpath('string(//table[contains(@class, "mg-b20")]/tr[3]/td[2]//a)')

for item in alltext:
    Log("text = %s" % item);

这甚至可以处理像混合内容这样的角落案例,例如:这样:

<a href="#">I am anchor text <span>But I am too and am not in Element.text</span> and I am in Element.tail</a>