使用 BeatifulSoup,如何使用 find_all 获取内容?

问题描述

HTML:

<Meta name="speaker" content="Peter">
<Meta name="speaker" content="John">
<Meta name="speaker" content="Jim">

通常如果我只想获取我使用的内容

from bs4 import BeatifulSoup

name = soup.find('Meta',attrs={'name': 'speaker'})['content']

print(name)

输出Peter

但是如果我想得到我不能使用的每个名字

name = soup.find_all('Meta',attrs={'name': 'speaker'})['content']

因为使用 find_all 时方括号只支持整数。

还有别的方法吗?

解决方法

names = soup.find_all('meta',attrs={'name': 'speaker'})

你可以使用 for 循环

name_list = []
for name in names:
    name_list.append(name["content"])

或列表理解

name_list = [name["content"] for name in names]

然后你得到

['Peter','John','Jim']