如何使用类液返回所有h1

时间:2015-04-07 09:43:32

标签: python beautifulsoup

下面的代码必须生成一个列表,其中包含所有包含类流体的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

1 个答案:

答案 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元素本身,我认为这是你想要的。

相关问题