美女组:获得特克斯级

2024-06-25 22:57:37 发布

您现在位置:Python中文网/ 问答频道 /正文

假设以下代码:

for data in soup.findAll('div',{'class':'value'}):
    print(data)

提供以下输出:

<div class="value">
<p class="name">Michael Jordan</p>
</div>


<div class="value">
<p class="team">Real Madrid</p>
</div>


<div class="value">
<p class="Sport">Ping Pong</p>
</div>

我要创建以下词典:

  Person = {'name': 'Michael Jordan', 'team': 'Real Madrid', 'Sport': 'Ping Pong'}

我可以使用data.text获取文本,但如何获取class的文本,以便命名字典的keys(Person[key1],Person[key2]…)?


Tags: name文本divdatavaluepingrealteam
2条回答

您可以使用以下选项:

content = '''
<div class="value">
<p class="name">Michael Jordan</p>
</div>

<div class="value">
<p class="team">Real Madrid</p>
</div>

<div class="value">
<p class="Sport">Ping Pong</p>
</div>
'''

from bs4 import BeautifulSoup

soup = BeautifulSoup(content)

person = {}

for div in soup.findAll('div', {'class': 'value'}):
    person[div.find('p').attrs['class'][0]] = div.text.strip()

print(person)

输出

{'Sport': u'Ping Pong', 'name': u'Michael Jordan', 'team': u'Real Madrid'}

你不能这样:

for data in soup.findAll('div',{'class':'value'}):
    person = {}
    for item in data.find_all('div'):
        attr = item.p.attrs.get("class")[0]
        value = item.p.text
        person[attr] = value

    print person

相关问题 更多 >