gpt4 book ai didi

python - BeautifulSoup - 处理类似表格的网站结构|返回字典

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

我有一些 html,看起来像一本字典:

制造商网站:网站,

总部:位置等..

每个部分都包含在自己的 div 中(因此 findAll,div 类名)。

是否有一种优雅且简单的方法将此类代码提取到字典中?或者是否必须迭代每个 div,找到两个文本项,并假设第一个文本项是字典的键,第二个值是同一字典元素的值。

示例站点代码:

    car = '''
<div class="info flexbox">
<div class="infoEntity">
<span class="manufacturer website">
<a class="link" href="http://www.ford.com" rel="nofollow noreferrer" target="_blank">
www.ford.com
</a>
</span>
</div>
<div class="infoEntity">
<label>
Headquarters
</label>
<span class="value">
Dearbord, MI
</span>
</div>
<div class="infoEntity">
<label>
Model
</label>
<span class="value">
Mustang
</span>
</div>
'''

car_soup = BeautifulSoup(car, 'lxml')
print(car_soup.prettify())

elements = car_soup.findAll('div', class_ = 'infoEntity')
for x in elements:
print(x) ###and then we start iterating over x, with beautiful soup, to find value of each element.

期望的输出是这样的

expected result result = {'manufacturer website':"ford.com", 'Headquarters': 'Dearborn, Mi', 'Model':'Mustang'}

附注此时我已经用非优雅的方式做了几次,只是想知道我是否遗漏了一些东西,以及是否有更好的方法来做到这一点。预先感谢您!

最佳答案

或者,为了使事情或多或少通用和简单,您可以将带有标签和制造商网站链接的字段的处理分开:

soup = BeautifulSoup(car, 'lxml')

car_info = soup.select_one('.info')
data = {
label.get_text(strip=True): label.find_next_sibling().get_text(strip=True)
for label in car_info.select('.infoEntity label')
}
data['manufacturer website'] = car_info.select_one('.infoEntity a').get_text(strip=True)

print(data)

打印:

{'Headquarters': 'Dearbord, MI', 
'Model': 'Mustang',
'manufacturer website': 'www.ford.com'}

关于python - BeautifulSoup - 处理类似表格的网站结构|返回字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58775552/

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