BeautifulSoup:获取类文本

新手上路,请多包涵

假设如下代码:

 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 的字典,-人[key2] …)?

原文由 Mpizos Dimitris 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 399
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'}

原文由 gtlambert 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以这样做:

 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

原文由 salmanwahed 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题