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

标签 python css beautifulsoup

我想选择 href 属性中不包含 mailto: 的所有 anchor 标记。

在 BeautifulSoup 4.7.0 版本之前,我可以使用以下代码:

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

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

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

soupsieve.util.SelectorSyntaxError: Malformed attribute selector

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

最佳答案

href 值中的冒号似乎是 just needed to be escaped .

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

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

或者通过引用整个值:

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

关于python - 在 BeautifulSoup 4.7.0+ 中,如何选择在其属性之一中不包含指定文本的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58296098/

相关文章:

python - MAC | Python 脚本运行良好,在终端插入 Mysql 表但无法作为 Cron 作业运行 |苹果

python - 使用多个 token 发布 CSRF token ?

python - 冗余函数调用会发生什么?

python - 更新 ImageField 时如何删除旧图像?

python - R 中的 scikit-learn 与网状结构

html - 现在(2020 年)自由使用 Flexbox 和 Grid 是否安全?

css - 覆盖按比例大小的背景图像

python - Pandas.to_datetime() 仅在数据框中的列上失败

javascript - 如果元素被 css 隐藏,则 MouseEvent 被吞下

javascript - dryscrape 和 BeautifulSoup 获取 js 渲染的 iframe 中的所有行