1

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

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

</form>

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

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

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

还有其他想法吗?

4

2 回答 2

2

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

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

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

soup.findall('input', id=re.compile('b'))[1]
于 2012-06-17T11:42:35.053 回答
1

在你的正则表达式中在 b 之后添加 $ ,这应该可以解决问题。

于 2012-06-17T11:30:52.057 回答