下面的代码必须生成一个列表,其中包含所有包含类流体的h1。但它返回一个空列表。我找不到错误,任何人都可以帮助我
allh1= soup.findAll('h1')
classes = [ h1.get('class') for h1 in allh1]
fluid_list = []
for item in classes:
if item == 'fluid':
fluid_list.append(item)
print fluid_list
答案 0 :(得分:1)
您的代码不起作用,因为您的classes
列表包含找到的每个h1
的类列表(如果没有类,则为None
):
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
</head>
<body>
<h1>header 1</h1>
<h1 class="fluid">header 2</h1>
<h1>header 3</h1>
<h1 class="fluid static">header 4</h1>
</body>
</html>
"""
soup = BeautifulSoup(html_doc)
allh1= soup.findAll('h1')
classes = [ h1.get('class') for h1 in allh1]
print(classes)
[None, ['fluid'], None, ['fluid', 'static']]
如果你使用的是Beautiful Soup 4.1.2+,你可以使用class_
,但是:
fluid_list = soup.find_all('h1', class_='fluid')
print fluid_list
[<h1 class="fluid">header 2</h1>, <h1 class="fluid static">header 4</h1>]
这将返回h1
元素本身,我认为这是你想要的。