Python 如何以Beauty Soup bs4编码风格处理CSS类的搜索

Python 如何以Beauty Soup bs4编码风格处理CSS类的搜索,python,class,beautifulsoup,Python,Class,Beautifulsoup,对于bs3,它应该如下所示: soup = BeautifulSoup(html_doc) soup.find("div", {"class":"box text"}) 对于bs4,如下所示: soup = BeautifulSoup(html_doc) soup.find("div", class_="box text") 对我来说,只有bs3风格有效。有什么建议吗 编辑: 例如: <div class="box text" align="center"> 我更喜欢CSS选择

对于bs3,它应该如下所示:

soup = BeautifulSoup(html_doc)
soup.find("div", {"class":"box text"})
对于bs4,如下所示:

soup = BeautifulSoup(html_doc)
soup.find("div", class_="box text")
对我来说,只有bs3风格有效。有什么建议吗

编辑: 例如:

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

我更喜欢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)
从bs4导入美化组
数据=“”
'''
soup=BeautifulSoup(数据'lxml')
打印(“soup.find_all('div',{'class':'box text'}):”)
打印('*'*80)
对于汤中的div.find_all(“div”,{“class”:“box text”}):
印刷(部门)
打印(“\n分组。查找所有('div',class='box text'):”)
打印('*'*80)
用于汤中的div。查找所有(“div”,class=“box text”):
印刷(部门)
打印(“\n使用soup.select('div.box.text'):”)
打印('*'*80)
对于汤中的div.select('div.box.text'):
印刷(部门)
印刷品:

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>
soup.find_all('div',{'class':'box text'):
********************************************************************************
soup.find_all('div',class='box text'):
********************************************************************************
使用soup.select('div.box.text'):
********************************************************************************

后一种语法仅在类属性完全匹配时有效(
'text box'
'box text callout'
不匹配);如果您需要匹配至少两个可能更多的类,请使用正则表达式。您需要给我们一些输入示例,其中BS3版本可以工作,但BS4版本不能。