Python BeautifulSoup 使用 re.compile 查找字符串结尾

标签 python beautifulsoup

使用以下示例,如何利用 BeautifulSoup 查找(或选择)第二个 INPUT 元素。

<form>
<input id="a:b:c" ...>
<input id="a:b" ...>

</form>

我尝试使用 .find('input', id=re.compile('b')) 这当然给了我第一个元素。

我正在寻找一种直接到达第二个的方法,而不使用 FindAll 和迭代。

有没有办法改进正则表达式?

还有其他想法吗?

最佳答案

根据BeautifulSoup documentation ,如果您确切知道要查找的 ID,则可以将其作为字符串而不是正则表达式传递:

soup.findall('input', id='a:b')

否则,如果您总是在寻找与您的正则表达式匹配的第二个输入,文档建议soup.findall为您提供一个列表而不是生成器。这意味着您不需要迭代,因为您可以直接询问第二个结果:

soup.findall('input', id=re.compile('b'))[1]

关于Python BeautifulSoup 使用 re.compile 查找字符串结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070955/

相关文章:

python - 使用 beautifulsoup 从 HTML 获取链接文本

python - 通过标准迭代总结值并存储到字典中

python - 在 django Rest 框架中返回 Respose 对象时出现 NoReverseMatch 错误

python - 属性错误 : 'Queue' object has no attribute 'join' in python 2. 7.x

python - 在一个类中抓取一个类

python - 使用 python 抓取谷歌精选片段

python - 如何为第 9 题制作一个高效的解算器

python - 在 Python Sphinx 中使用自动模块不显示变量和类属性

python - 如何使用 Beautiful Soup 查找节点

python - 使用python从网页中提取某些文本行