gpt4 book ai didi

python - Beautifulsoup 多个div内容到字典

转载 作者:行者123 更新时间:2023-12-01 00:35:00 25 4
gpt4 key购买 nike

我尝试在Python中的字典中获取两个div的内容。主要问题是我能够获取第一个 div 内容和第二个内容,但不能以正确的 key:value 方式获取。我只能拿回 key 。因此,我知道我需要迭代内容,但我看不到如何使我的 for 循环 正确。

已关注 12无法完成我正在寻找的案件。

这是我迄今为止尝试过的:

from bs4 import BeautifulSoup
import requests
url='https://www.samenvoordeklant.nl/arbeidsmarktregios'
base=requests.get(url, timeout=15)
html=BeautifulSoup(base.text, 'lxml')
regios=html.find_all('div',attrs={'class':['field field--name-node-title field--type-ds field--label-hidden field__item animated','field field--name-field-gemeenten field--type-string-long field--label-hidden field__item animated']})

for regio in regios:
print({regio.get_text(strip=True)})

结果:

{'Achterhoek'}
{'Aalten, Berkelland, Bronckhorst, Doetinchem, Montferland, Oost Gelre, Oude IJsselstreek, Winterswijk'}
{'Amersfoort'}
{'Amersfoort, Baarn, Bunschoten, Leusden, Nijkerk, Soest, Woudenberg'}

等等

我想要的结果是:

{'Achterhoek':'Aalten', 'Berkelland', 'Bronckhorst', 'Doetinchem', 'Montferland', 'Oost Gelre', 'Oude IJsselstreek', 'Winterswijk'}
{'Amersfoort':'Amersfoort', 'Baarn', 'Bunschoten', 'Leusden', 'Nijkerk', 'Soest', 'Woudenberg'}

等等。这使我可以更轻松地将其移至 pandas dataframe 中。

最佳答案

一个简单的方法是使用两个列表的 dict 和 zip。请注意,我使用了更快的 css 选择器,并避免使用类的完整多值。

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.samenvoordeklant.nl/arbeidsmarktregios')
soup = bs(r.content, 'lxml')
result = dict(zip([i.text for i in soup.select('h2 a')], [i.text for i in soup.select('.field--type-string-long')]))
print(result)
# result = {k:v.split(', ') for k, v in result.items()} ##add this line at end if want list as value rather than string
<小时/>

示例 pprint 输出:

enter image description here

<小时/>

如果您想要一个列表作为值,您只需添加最后一行:

result = {k:v.split(', ') for k, v in result.items()}

关于python - Beautifulsoup 多个div内容到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57866548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com