如何在Python中使用BeautifulSoup提取div属性

2024-04-23 09:55:03 发布

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

我试图提取这些数据(lat和lng):

<div class="location"
    lat="1234"
    lng="5678"
>

这对我来说毫无意义:

print (soup.find_all("div", { "class" : "location"}))

我的最终目标是将这些值存储在字典中。谢谢。你知道吗


Tags: 数据div字典locationallfindclassprint
3条回答

您可以在BeautifulSoup中使用类似字典的元素属性

locations = [{'lat': location['lat'], 'lng': location['lng']}
             for location in soup.find_all("div", {"class": "location"})]

如果只有一个位置,请使用find()

location = soup.find("div", {"class": "location"})
print({'lat': location['lat'], 'lng': location['lng']})

This is giving me nothing

但这是一个单独的问题。您可能只是在解析的HTML中没有这个元素。你知道吗

从BeautifulSoup文档中,您可能使用find\u all()错误。 https://www.crummy.com/software/BeautifulSoup/bs4/doc/#the-keyword-arguments

尝试:

print (soup.find_all("div",class_="location"))

或者

print (soup.find_all("div",attrs={"class": "location"}))

您当前的print正在返回一个结果列表:

[<div class="location" lat="1234" lng="5678"></div>]

您可以通过遍历每个结果来访问这些结果:

for r in results:
    print(r['lat'], r['lng'])

有两个div元素的完整示例如下所示:

from bs4 import BeautifulSoup

html = """<div class="location"
    lat="1234"
    lng="5678"
>
<div class="location"
    lat="9101"
    lng="1213"
>"""
soup = BeautifulSoup(html, 'html.parser')
results = soup.find_all("div", { "class" : "location"})
for r in results:
    print(r['lat'], r['lng'])

这将打印出两个结果:

('1234', '5678')
('9101', '1213')

相关问题 更多 >