我想拉这个数据(纬度和经度):如何拉DIV与BeautifulSoup属性在Python
<div class="location"
lat="1234"
lng="5678"
>
这是给我什么:
print (soup.find_all("div", { "class" : "location"}))
我的最终目标是将这些值存储在字典中。谢谢。
我想拉这个数据(纬度和经度):如何拉DIV与BeautifulSoup属性在Python
<div class="location"
lat="1234"
lng="5678"
>
这是给我什么:
print (soup.find_all("div", { "class" : "location"}))
我的最终目标是将这些值存储在字典中。谢谢。
可以使用字典一样访问元素属性在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中没有这个元素。
从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"}))
您当前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')
那么你需要分享网址,如果它不工作。内容可能会动态呈现,因此不会在返回的源代码中显示,但只有您知道您正在抓取的内容。 –