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

发布于 2024-12-19 00:45:01 字数 389 浏览 0 评论 0原文

我对 XPath 还很陌生,无法通过其他解决方案找到答案。

我想做的是选择给定 td 内的所有 a 元素(例如 td[2])并运行 for语句来输出 a 元素中包含的文本。

源代码:

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)

有什么指示可以让我完成这项工作吗?

谢谢!

I'm pretty new to XPath and couldn't figure it out looking at other solutions.

What I'm trying to do is select all the a elements inside a given td (td[2] in example) and running a for statement to output the text contained within the a elements.

Source code:

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)

Any pointer in how I can make this work?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放飞的风筝 2024-12-26 00:45:01

您需要的 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>

The XPath you need is pretty close:

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

I don't know what library you're using, but I suspect it is the Plex Parsekit API. If so, parsekit uses lxml.etree as its underlying library, so you can simplify your code even further:

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);

This will even take care of corner cases like mixed content, e.g. this:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文