2016-09-06 72 views
0

我想拉这个数据(纬度和经度):如何拉DIV与BeautifulSoup属性在Python

<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

您当前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')