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

时间:2012-06-17 11:27:29

标签: python beautifulsoup

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

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

</form>

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

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

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

还有其他想法吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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