如何在Beautiful Soup bs4编码风格中处理CSS类的搜索

时间:2013-05-10 12:22:17

标签: python class beautifulsoup

documentation之后,bs3应该如下所示:

soup = BeautifulSoup(html_doc)
soup.find("div", {"class":"box text"})

documentation之后为bs4这样:

soup = BeautifulSoup(html_doc)
soup.find("div", class_="box text")

对我来说,只有bs3风格有效。有什么建议吗?

编辑:     例如:

<div class="box text" align="center">

1 个答案:

答案 0 :(得分:0)

我希望使用CSS选择器select('div.box.text')。这很容易,并且可以在属性的各个位置上找到类:

from bs4 import BeautifulSoup

data = '''
<div class="box text" align="center"></div>
<div class="box" align="center"></div>
<div class="text" align="center"></div>
<div class="text box" align="center"></div>
<div class="text somethingelse box" align="center"></div>'''

soup = BeautifulSoup(data, 'lxml')

print("soup.find_all('div', {'class':'box text'}):")
print('*' * 80)

for div in soup.find_all("div", {"class":"box text"}):
    print(div)

print("\nsoup.find_all('div', class_='box text'):")
print('*' * 80)

for div in soup.find_all("div", class_="box text"):
    print(div)

print("\nUsing soup.select('div.box.text'):")
print('*' * 80)

for div in soup.select('div.box.text'):
    print(div)

打印:

soup.find_all('div', {'class':'box text'}):
********************************************************************************
<div align="center" class="box text"></div>

soup.find_all('div', class_='box text'):
********************************************************************************
<div align="center" class="box text"></div>

Using soup.select('div.box.text'):
********************************************************************************
<div align="center" class="box text"></div>
<div align="center" class="text box"></div>
<div align="center" class="text somethingelse box"></div>