Google Maps 是一个资源丰富的地图应用程序,可提供有关世界各地地理位置的全面信息。 它也是当地商业信息的重要来源。 您可以使用它来获取公司名称、地址信息、网站 URL、营业时间等。
抓取 Google 地图数据可让您将其转换为有组织的格式,以便用于各种目的,包括生成业务线索、组织群发电子邮件活动以及获取用于电话营销的联系信息。
本文讨论如何从网络抓取 Google 地图。您将学习如何从应用程序获取有用的本地商家信息。我们还将讨论 Crawlbase 如何帮助您使数据提取过程变得顺畅、快速且有益。
让我们先谈谈如何使用 爬虫库 用于谷歌地图数据抓取。
什么是 Google 地图抓取工具?
它是一款功能强大的工具,可让您提取有关位置、地区、名称、联系信息、评论、评分、地理位置等的信息。它提供了一种比 Google Places API 更有效的方法。您可以通过使用关键字、坐标或 URL 进行搜索,从特定地点、整个城市甚至更广泛的地区提取数据。
使用 Crawlbase 抓取 Google 地图
Crawlbase 是一款多功能工具,可让您大规模抓取在线数据。它可用于各种数据提取任务,包括抓取 Google 地图。它是您克服常见抓取挑战并充分利用您的努力所需要的工具。
以下是 Crawlbase 成为创建 Google 地图抓取工具的重要工具的一些原因:
- 使用方便: Crawlbase 提供了用户友好的 API,可让您在几分钟内创建 Google 地图抓取工具。此外,还有详细的文档,其中包含有关如何集成 API 的代码示例。
- 支持匿名爬取: 使用 Crawlbase,您无需担心在抓取 Google 地图时暴露您的真实身份。它拥有大量代理和数据中心,可让您保持匿名。
- 支持高级提取: Crawlbase 支持所有类型的抓取项目。由于它支持 JavaScript 渲染,因此它为您提供了实际的浏览器功能,可从现代、复杂的网站检索数据,而不会遇到任何障碍。它还允许您绕过封锁、CAPTCHA 和其他可能妨碍您快速、熟练地收集数据的访问限制。
- 免费测试账户: 注册账户后,您将获得 1,000 个免费积分,用于试用该工具的功能。然后,您可以继续使用该服务,并在每个计费周期结束时支付使用费用。
在本 Google 地图抓取教程中,我们将使用 Crawlbase 的 抓取 API. 对 API 的每个请求都从以下基本部分开始:
1 | https://api.crawlbase |
然后,需要以下两个强制查询字符串参数:
- 唯一身份验证令牌: 这授权您使用该 API。 Crawlbase 提供两种类型的令牌:用于完成通用 Web 请求的普通令牌和用于抓取动态、JavaScript 呈现的网站的 JavaScript 令牌。
- 目标网址: 这是您提取其数据所需的 URL。 它应该以 HTTP 或 HTTPS 开头。 您还应该对 URL 进行编码,以将其转换为可以在 Internet 上轻松传输的格式。
这是向 API 请求添加强制参数的方法:
1 | https://api.crawlbase.com/?token=ADD_TOKEN&url=ADD_URL |
这就是开始使用 Crawlbase 从 Internet 提取信息所需的全部内容。
就这么简单!
实际上,如果您为上述请求提供所需的参数信息并在 Web 浏览器的地址栏上执行它,它将返回目标网页的完整 HTML 代码。
如何创建 Google 地图抓取工具
现在让我们看看如何使用 Crawlbase 快速高效地抓取 Google 地图数据。在本教程中,我们的目标是提取纽约餐馆的数据 谷歌地图. 我们将使用 PHP 编程语言来完成这项任务。
第 1 步:获取请求 URL
让我们先去谷歌地图搜索纽约的餐馆。
如上面的屏幕截图所示,餐厅的数据显示在页面的左侧边栏上。 这就是我们想要抓取的内容,而不是从整个页面中提取数据。 抓取它的最简单方法是检查浏览器的网络流量并获取传递数据的 URL。
要检查浏览器的网络流量,您可以右键单击页面左侧边栏的任意位置并选择 检查 选项。 这将打开浏览器窗口底部的开发者工具部分。 接下来,选择网络选项卡。 您将开始看到通过网络传输的数据。
要加载我们想要的数据,请再次搜索“纽约餐馆”。 然后,您可以在网络面板搜索框中键入“搜索”以过滤搜索 URL。
这将显示与您最近的搜索相关的 URL。 在这种情况下,我们想要的数据在第一个 GET 请求中,它以 JSON 格式提供餐厅的数据。
如果单击包含请求的行,则会显示一个新的右侧窗格。 该窗格提供有关请求的更多信息。 在下面 头 选项卡,突出显示并复制 URL。 这是用于获取 Google 地图上显示的数据的 URL。 这是我们将用于抓取餐馆数据的 URL。
这是我们抓取的网址:
1 | https://www.google.com/search?tbm=map&authuser=0&hl=en&gl=ke&pb=!4m12!1m3!1d13288.926258283986!2d-74.02334913898135!3d40.73841320805614!2m3!1f0!2f0!3f0!3m2!1i1366!2i211!4f13.1!7i20!10b1!12m8!1m1!18b1!2m3!5m1!6e2!20e3!10b1!16b1!19m4!2m3!1i360!2i120!4i8!20m65!2m2!1i203!2i100!3m2!2i4!5b1!6m6!1m2!1i86!2i86!1m2!1i408!2i240!7m50!1m3!1e1!2b0!3e3!1m3!1e2!2b1!3e2!1m3!1e2!2b0!3e3!1m3!1e3!2b0!3e3!1m3!1e8!2b0!3e3!1m3!1e3!2b1!3e2!1m3!1e10!2b0!3e3!1m3!1e10!2b1!3e2!1m3!1e9!2b1!3e2!1m3!1e10!2b0!3e3!1m3!1e10!2b1!3e2!1m3!1e10!2b0!3e4!2b1!4b1!9b0!22m6!1sVgY-YP-eBdqg5NoPuc2f4A8:2!2s1i:0,t:11886,p:VgY-YP-eBdqg5NoPuc2f4A8:2!7e81!12e5!17sVgY-YP-eBdqg5NoPuc2f4A8:92!18e15!24m54!1m16!13m7!2b1!3b1!4b1!6i1!8b1!9b1!20b0!18m7!3b1!4b1!5b1!6b1!9b1!13b0!14b0!2b1!5m5!2b1!3b1!5b1!6b1!7b1!10m1!8e3!14m1!3b1!17b1!20m2!1e3!1e6!24b1!25b1!26b1!29b1!30m1!2b1!36b1!43b1!52b1!54m1!1b1!55b1!56m2!1b1!3b1!65m5!3m4!1m3!1m2!1i224!2i298!89b1!26m4!2m3!1i80!2i92!4i8!30m0!34m16!2b1!3b1!4b1!6b1!8m4!1b1!3b1!4b1!6b1!9b1!12b1!14b1!20b1!23b1!25b1!26b1!37m1!1e81!42b1!47m0!49m1!3b1!50m4!2e2!3m2!1b1!3b1!65m0!69i544&q=New york restaurants&oq=New york restaurants&gs_l=maps.3..38i39i129k1j38i39i129i444k1j38i426k1l3.0.0.2.48644.1.1.0.0.0.0.713.713.6-1.1.0....0...1ac..64.maps..0.1.713....0.&tch=1&ech=2&psi=VgY-YP-eBdqg5NoPuc2f4A8.1614677593039.1 |
接下来,让我们通过删除以下可能不需要的查询字符串参数来清理请求 URL:
- oq
- GS_L
- TCH
- 所有
- PSI
这是最终 URL 的样子:
1 | https://www.google.com/search?tbm=map&authuser=0&hl=en&gl=ke&pb=!4m12!1m3!1d13288.926258283986!2d-74.02334913898135!3d40.73841320805614!2m3!1f0!2f0!3f0!3m2!1i1366!2i211!4f13.1!7i20!10b1!12m8!1m1!18b1!2m3!5m1!6e2!20e3!10b1!16b1!19m4!2m3!1i360!2i120!4i8!20m65!2m2!1i203!2i100!3m2!2i4!5b1!6m6!1m2!1i86!2i86!1m2!1i408!2i240!7m50!1m3!1e1!2b0!3e3!1m3!1e2!2b1!3e2!1m3!1e2!2b0!3e3!1m3!1e3!2b0!3e3!1m3!1e8!2b0!3e3!1m3!1e3!2b1!3e2!1m3!1e10!2b0!3e3!1m3!1e10!2b1!3e2!1m3!1e9!2b1!3e2!1m3!1e10!2b0!3e3!1m3!1e10!2b1!3e2!1m3!1e10!2b0!3e4!2b1!4b1!9b0!22m6!1sVgY-YP-eBdqg5NoPuc2f4A8:2!2s1i:0,t:11886,p:VgY-YP-eBdqg5NoPuc2f4A8:2!7e81!12e5!17sVgY-YP-eBdqg5NoPuc2f4A8:92!18e15!24m54!1m16!13m7!2b1!3b1!4b1!6i1!8b1!9b1!20b0!18m7!3b1!4b1!5b1!6b1!9b1!13b0!14b0!2b1!5m5!2b1!3b1!5b1!6b1!7b1!10m1!8e3!14m1!3b1!17b1!20m2!1e3!1e6!24b1!25b1!26b1!29b1!30m1!2b1!36b1!43b1!52b1!54m1!1b1!55b1!56m2!1b1!3b1!65m5!3m4!1m3!1m2!1i224!2i298!89b1!26m4!2m3!1i80!2i92!4i8!30m0!34m16!2b1!3b1!4b1!6b1!8m4!1b1!3b1!4b1!6b1!9b1!12b1!14b1!20b1!23b1!25b1!26b1!37m1!1e81!42b1!47m0!49m1!3b1!50m4!2e2!3m2!1b1!3b1!65m0!69i544&q=New york restaurants |
第 2 步:检查返回的数据
现在让我们使用抓取的 URL 发出请求并检查返回的数据的样子。 这将有助于在下一步中创建抓取逻辑。
我们将使用 PHP 卷曲库 发出 GET 请求并检索 Google 地图数据。由于 Crawlbase 需要对 URL 进行编码,因此我们将使用内置的 urlcode() 函数对抓取的 URL 进行编码。
在本例中,我们将使用 Crawlbase 的普通令牌来发出请求。
这是代码:
1 |
|
如果我们运行上面的代码,这是我们在浏览器上得到的输出:
如果您将返回的数据粘贴到 JSON 验证器工具上,例如 这个 JSON 查看器,你可以做一些有用的观察。 例如,您会注意到删除前四个字符会使数据采用有效的 JSON 格式。
您还会注意到数据包含在相互嵌套的数组中。 例如,前 20 家餐厅的数据包含在以下标记部分中:
如果我们扩展一个数组,我们可以找到每个餐厅的信息。 例如,如果我们展开嵌套数组 1,您会注意到餐厅的详细信息包含在数组 14 中。这是贯穿数据的模式。
例如,餐厅的名称位于第 11 位:
餐厅的位置在 18 号:
餐厅的电话号码在数组 178 处:
第 3 步:创建抓取逻辑
如前所述,删除返回数据中的前四个字符使其成为有效的 JSON 格式。 这将使迭代数据成为可能。
这是执行此操作的代码:
1 | $响应数据 = 子字符串($响应数据, 4- 1); |
此外,更换 空 返回的响应中带有空字符串的值可以更容易地处理数据。
这是执行此操作的代码:
1 | $响应数据 = 字符串替换(“空值,”, '"",', $响应数据); |
接下来,让我们使用内置 json_decode 函数将 JSON 字符串数据转换为 PHP 对象变量。 我们还将设置 true 参数将返回的对象转换为关联数组。
这是代码:
1 | $scraped_data = json_decode($响应数据, true); |
接下来,让我们使用 固定 检查餐厅数据是否存在的功能。 我们将把其余的抓取逻辑放在这个函数中。
然后,让我们使用 的foreach 循环遍历数组并查找出现第 14 个数组的实例。 请记住,我们需要的数据包含在 14 号数组中。
最后,让我们找出餐厅名称、位置和电话号码的出现次数。
这是代码:
1 | if (固定($scraped_data[0][1])) |
总结
以下是使用 Crawlbase 抓取 Google 地图的完整代码:
1 |
|
如果我们运行代码,这是我们得到的结果(为简洁起见,它被截断了):
我们做到了!
我们设法从谷歌地图中提取数据。
使用 Crawlbase 爬取 Google 地图数据
这就是使用 Crawlbase 抓取 Google 地图的方法。借助 Crawlbase,您可以快速高效地提取地图数据,同时保持匿名。
它是您提取在线数据所需的工具,无需担心遇到访问限制。 您可以使用它从任何网页中提取非结构化信息,并将数据轻松导入您的工作环境。
点击这里创建 免费的 Crawlbase 帐户.
刮刮快乐!