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

0 投票
1 回答
1453 浏览
提问于 2025-04-17 07:31

我对XPath还很陌生,看了其他的解决方案也没搞明白。

我想做的是选中一个特定的

单元格(在这个例子中是
的第二个单元格)里面的所有元素,然后用一个循环把这些元素里的文本输出出来。

源代码:

multiple = HTML.ElementFromURL(url).xpath('//table[contains(@class, "mg-b20")]/tr[3]/td[2]/*[self::a]')

for item in multiple:
    Log("text = %s" %item.text)

有没有什么建议可以让我实现这个功能呢?

谢谢!

1 个回答

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>

撰写回答