首页 > 解决方案 > 在谷歌地图上创建的刮地图

问题描述

我的目标是抓取加拿大曼尼托巴省大麻零售商的名称和位置。然后将所有数据放到一个 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)

输出:

[] []

标签: pythongoogle-mapsweb-scrapingbeautifulsoup

解决方案


我认为尝试一下会很酷,所以我花了一些时间。它不起作用。

当您单击事物并获取地址时,Google 页面是动态构建的。在您开始单击并展开它们或将鼠标悬停在事物上之前,文件中没有地址。如果你使用谷歌开发者工具并点击一些东西来检查它们,你似乎认为它会起作用,因为你可以在那里找到带有加拿大曼尼托巴省的 div 标签,如下所示:

<div class="fO2voc-jRmmHf-MZArnb-Q7Zjwb">MB-6 &amp; Twin Beach Rd, Manitoba R0C 2S0, Canada</div>

但是,如果您搜索加载的文档,则初始加载时不存在任何内容。

如果您能够以某种方式获得完整的文件,这将找到所有地址(也许除其他外):

strings_of_interest = soup.findAll('div', text = re.compile('Manitoba'))

推荐阅读