python - 在谷歌地图上创建的刮地图
问题描述
我的目标是抓取加拿大曼尼托巴省大麻零售商的名称和位置。然后将所有数据放到一个 excel 文件中。来自这个网站:https ://www.google.com/maps/d/u/0/查看器?mid=1jTYtNQgB0CVC27Bn_xIsFGeVuCh_KCdR&ll=49.671544600000004%2C-96.65402250000001&z=8。
我不确定这是否是正确的方向,只使用 json 抓取请求而不使用 b4。但是,任何建议将不胜感激。
import requests
from bs4 import BeautifulSoup as bs
import pandas
r = requests.get("https://www.google.com/maps/d/u/0/viewer?mid=1jTYtNQgB0CVC27Bn_xIsFGeVuCh_KCdR&ll=49.85504530000007%2C-97.11150419999998&z=8")
soup = bs(r.content)
Address = soup.find_all("div",{"class": "fO2voc-jRmmHf-MZArnb-Q7Zjwb"})
Name = soup.find_all("div",{"class": "qqvbed-p83tee-lTBxed"})
print(Address,Name)
输出:
[] []
解决方案
我认为尝试一下会很酷,所以我花了一些时间。它不起作用。
当您单击事物并获取地址时,Google 页面是动态构建的。在您开始单击并展开它们或将鼠标悬停在事物上之前,文件中没有地址。如果你使用谷歌开发者工具并点击一些东西来检查它们,你似乎认为它会起作用,因为你可以在那里找到带有加拿大曼尼托巴省的 div 标签,如下所示:
<div class="fO2voc-jRmmHf-MZArnb-Q7Zjwb">MB-6 & Twin Beach Rd, Manitoba R0C 2S0, Canada</div>
但是,如果您搜索加载的文档,则初始加载时不存在任何内容。
如果您能够以某种方式获得完整的文件,这将找到所有地址(也许除其他外):
strings_of_interest = soup.findAll('div', text = re.compile('Manitoba'))
推荐阅读
- android - 客户端 - 服务器通信和安全
- unity3d - 如何使用 Oculus Touch GazeRing 销毁 GameObject?
- asp.net - Asp.net MVC,如何在一个视图中添加多个模型
- pdf - 将类似链接的文本转换为链接
- android - ionic3 中的 Log.e()、Log.d()?
- c# - 使用 C# 编写扩展方法以检索属性描述
- r - 如何获取数据框中未找到的值的 NA
- cluster-analysis - 聚类完成后如何在不重新聚类整个数据集的情况下更新数据集?
- php - PHP邮件表单未从主机发送
- typescript - Contacts.find(fields,options) 仅针对离子中 for 循环内的最后一个元素执行?