我试图提取这些数据(lat和lng):
<div class="location"
lat="1234"
lng="5678"
>
这没有给我任何东西:
print (soup.find_all("div", { "class" : "location"}))
我最终的目标是将这些值存储在字典中。感谢。
答案 0 :(得分:2)
你可以在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']})
这不给我什么
这是一个单独的问题。您可能在解析的HTML中没有此元素。
答案 1 :(得分:1)
您当前的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')
答案 2 :(得分:0)
从BeautifulSoup文档中,您可能使用了find_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"}))