在 BeautifulSoup 4.7.0+ 中,如何选择在其属性之一中不包含指定文本的所有元素

2024-02-04

我想选择所有不包含的锚标记mailto:在他们的href财产。

直到 BeautifulSoup 4.7.0 版本为止,我都可以使用以下代码:

links = soup.select("a[href^=mailto:]")

BeautifulSoup 4.7.0 版本用 SoupSieve 替换了 CSS 选择器实现,这应该更现代、更完整。

不幸的是,上面的代码现在抛出这个错误:

soupsieve.util.SelectorSyntaxError: Malformed attribute selector

该代码的直接替代品是什么?针对这些相同元素的正确方法是什么?


看来结肠在href的值只是需要逃避 https://stackoverflow.com/questions/41973243/attribute-selector-ahref-example-no-longer-working-after-updating-jquery.

您可以通过转义单个字符来做到这一点:

soup.select("a[href^=mailto\\:]")

或者通过引用整个值:

soup.select('a[href^="mailto:"]')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 BeautifulSoup 4.7.0+ 中,如何选择在其属性之一中不包含指定文本的所有元素 的相关文章