如何在BeautifulSoup中找到所有以字符串开头的div?

时间:2016-02-17 18:50:11

标签: python beautifulsoup

在BeautifulSoup中,如果我想找到其类为span3的所有div,我只会这样做:

result = soup.findAll("div",{"class":"span3"})

但是,在我的情况下,我想找到所有以span3开头的div,因此,BeautifulSoup应该找到:

<div id="span3 span49">
<div id="span3 span39">

等等......

我如何实现我想要的目标?我熟悉正则表达式;但我不知道如何将它们用于美丽的汤,也没有通过BeautifulSoup的文档找到任何帮助。

2 个答案:

答案 0 :(得分:11)

嗯,这些是您显示的id属性:

<div id="span3 span49">
<div id="span3 span39">

在这种情况下,您可以使用:

soup.find_all("div", id=lambda value: value and value.startswith("span3"))

或者:

soup.find_all("div", id=re.compile("^span3"))

如果这只是一个拼写错误,并且您实际上class属性以span3开头,并且您真的需要检查类以span3开头,那么您可以使用& #34;开始-与&#34; CSS selector

soup.select("div[class^=span3]")

这是因为您无法像检查class属性一样检查id属性,因为class很特殊,而且是multi-valued attribute

答案 1 :(得分:3)

这也有效:

soup.select("div[class*=span3]") # with *= means: contains