返回博客
指南
Andrei OgiolanLast updated on Mar 31, 20261 min read

如何从谷歌地图抓取评论

如何从谷歌地图抓取评论

简介

谷歌地图是全球使用最广泛的地图和导航服务之一,为用户提供了一种便捷的方式来查找和探索地点、商家及兴趣点。谷歌地图的一项关键功能是能够搜索地点并查看其详细信息,例如位置、评论、照片等。

从谷歌地图抓取这些数据,对于企业追踪和分析其门店的运营表现、研究人员研究消费者行为模式,以及个人寻找和探索新地点都大有裨益。

本文旨在提供一份分步指南,介绍如何使用 Node.js 配合我们的 API 抓取 Google 地图上的评论。我们将涵盖从搭建开发环境到提取相关数据,并讨论潜在问题的所有内容。读完本文后,您将掌握独立抓取 Google 地图地点结果所需的知识和工具。

为何应使用专业爬虫而非自行开发?

出于以下几个原因,使用专业爬虫往往比自行开发更优。首先,专业爬虫专为处理各类爬取任务而设计,在性能、可靠性和可扩展性方面经过优化。它们能够处理海量数据,并兼容多种网站类型和网络技术。这意味着专业爬虫通常比自建爬虫能更快、更准确地提取数据。

此外,专业爬虫通常内置了验证码破解、IP轮换和错误处理等功能,这些功能能提高爬取效率并减少出错概率。它们还提供技术支持和详细文档,当您遇到问题时会非常有用。

另一个重要方面是,专业爬虫服务商严格遵守目标网站的爬取政策,并确保数据的使用合法合规,这一点在进行数据抓取时必须牢记。

最后,就我们具体的情况而言,为了从 Google 地图评论中获取最佳效果,您需要在 Google URL 中传递一个 data_id 参数。该参数通常如下所示:0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e。 我知道这听起来可能令人望而生畏,因为您可能不知道如何获取特定地点的 data_id 属性,而您的担忧是正确的——Google 隐藏了这一信息,当您在 Google 地图中搜索地点时,页面上并不会显示该信息。但幸运的是,使用像我们这样的专业爬虫工具可以为您解决这个问题,自动获取这些数据。 我们将在后续章节中详细讲解如何获取 data_id,以及如何通过我们的 API 抓取 Google 地图上的评论。

定义目标

什么是 Google 地图评论?

Google 地图评论是指用户在 Google 地图上针对特定地点留下的评分和评论。这些评论包含用户姓名、评论日期、给出的评分以及评论内容等信息。

抓取 Google 地图评论对希望追踪和分析门店表现的企业、研究消费者行为模式的研究人员,以及想要发现和探索新地点的个人都大有裨益。通过提取评论数据,企业可以识别门店的优缺点,并据此进行改进。 研究人员可以分析评论的情感倾向,并从中发现消费者行为的规律。个人用户也可以利用这些信息来决定去哪里以及做什么。

我们的目标是什么?

环境搭建

在开始抓取 Google 地图评论之前,必须确保具备必要的工具。首要条件是 Node.js——这是一种支持在服务器端执行 JavaScript 的运行时环境,可从其官方网站下载。此外,还需要一个 API 密钥,您可通过在此处创建账户并激活 SERP 服务来获取。

配置好 Node.js 并获取 API 密钥后,下一步是创建一个 Node.js 脚本文件。可通过运行以下命令实现:

$ touch scraper.js

现在将以下代码行粘贴到文件中:

console.log("Hello World!")

然后运行以下命令:

$ node scraper.js

若终端显示“Hello World!”消息,则表明 Node.js 已成功安装,您可以继续进行最后一步。最后一步是获取您想抓取评论的地点的 Place ID。此时我们的 API 就派上用场了,它易于使用,且无需安装任何额外库。

首先,在 JavaScript 文件中,您需要导入 Node.js 的 `https` 内置模块,以便向我们的 API 发送请求。具体操作如下:

​​const https = require("https");

其次,您需要指定 API 密钥、搜索词以及目标地点的坐标:

const API_KEY = "<YOUR-API-KEY-HERE>" // You can get by creating an account - https://app.webscrapingapi.com/register

const query = "Waldo%20Pizza"

const coords = "@38.99313451901278,-94.59368586441806"

提示:这是在 Google 地图上获取地点坐标的方法:

下一步是将获取到的地点 ID 包含在 options 对象中,以便让我们的 API 知道您想要抓取哪个地点的评论:

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps&api_key=${API_KEY}&type=search&q=${query}&ll=${coords}`,

  "headers": {}

};

接下来,您需要使用所有这些信息设置对 API 的调用:

const req = https.request(options, function (res) {

 const chunks = [];

 res.on("data", function (chunk) {

   chunks.push(chunk);

 });

 res.on("end", function () {

   const body = Buffer.concat(chunks);

   const response = JSON.parse(body.toString());

   const data_id = response.place_results.data_id;

   if (data_id) {

       console.log(data_id);

   }

   else {

       console.log('We could not find a data_id property for your query. Please try using another query')

   }

 });

});

req.end();

最后,您可以执行刚刚创建的脚本并等待结果返回:

​​$ node scraper.js

此时屏幕上应显示 data_id 属性:

$ ​​0x87c0ef253b04093f:0xafdfd6dc1d3a2b4es

至此,配置过程已完成。有了 data_id 属性,您现在已掌握所有必要信息,可以使用 Node.js 通过我们的 API 创建一个 Google 地图评论抓取工具。

开始抓取 Google 评论

环境配置完成后,您已准备好使用我们的 API 开始抓取 Google 地图评论。要继续操作,您需要按照之前提到的方法设置 data 参数。在获取所有必要信息后,您可以按以下方式设置 data_id 参数:

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // the data_id we retrieved earlier

现在,唯一剩下的就是修改 options 对象,从而告知我们的 API 您希望从 Google 地图抓取评论:

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps_reviews&api_key=${API_KEY}&data_id=${data_id}`, // there is no need in having a query anymore, data_id is enough to identify a place

  "headers": {}

};

以上就是您需要做的全部操作。您的脚本现在应如下所示:

const http = require("https");

const API_KEY = "<YOUR-API-KEY-HERE>"

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // the data_id we retrieved earlier

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps_reviews&api_key=${API_KEY}&data_id=${data_id}`, // there is no need in having a query anymore, data_id is enough to identify a place

  "headers": {}

};

const req = http.request(options, function (res) {

  const chunks = [];

  res.on("data", function (chunk) {

    chunks.push(chunk);

  });

  res.on("end", function () {

    const body = Buffer.concat(chunks);

    const response = JSON.parse(body.toString())

    console.log(response);

  });

});

req.end();

执行此脚本后,您将收到类似于以下内容的响应:

reviews: [

    {

      link: 'https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUMyem9pOEdBEAE!2m1!1s0x0:0xafdfd6dc1d3a2b4e!3m1!1s2@1:CIHM0ogKEICAgIC2zoi8GA%7CCgwI1vuBkwYQiKeWyQE%7C?hl=en-US',

      date: '8 months ago',

      rating: 5,

      snippet: 'Wow, if you have dietary restrictions this is absolutely the place to go! Both for the variety of restrictions they cater to as well as the taste of the dishes.The good: great tasting food. Very conscious of dietary restrictions which include multiple types of vegan cheeses as well as gluten free. Decent drink selection.The meh: service is nice but a touch slow. Maybe understaffed? Prices are average for pizzas.The bad: noneFeatures: Did not see any masks on anyone inside. Unsure of cleaning practices so I cannot speak to that.Dine in: Yes\n' +

        'Takeout: Yes\n' +

        'Curbside pickup: YesWow, if you have dietary restrictions this is absolutely the place to go! Both for the variety of restrictions they cater to as well as the taste of the dishes. ...More',

      likes: 3,

      user: [Object],

      images: [Array]

    },

    {

      link: 'https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSURXOUxHSUl3EAE!2m1!1s0x0:0xafdfd6dc1d3a2b4e!3m1!1s2@1:CIHM0ogKEICAgIDW9LGIIw%7CCgwI3OnIkQYQwLGL1gM%7C?hl=en-US',

      date: '9 months ago',

      rating: 5,

      snippet: "We love Waldo Pizza! We have dairy allergies and Waldo offers a wide range of vegan cheeses as well as a ton of different toppings. The vegan dessert here is always excellent as well, super rich in flavor. Of course the traditional pizza, pasta and dessert are also amazing! It's great to have both options under one roof!Dine in: Yes\n" +

        'Outdoor seating: No ...More',

      likes: 1,

      user: [Object],

      images: [Array]

    }

    . . . 

]    

就这样!您已成功通过我们的 API 抓取了 Google 地图评论,现在可以将获取的数据用于数据分析、商业分析、机器学习等多种用途。如需进一步参考以及其他 6 种编程语言的代码示例,请查阅我们的 Google 地图评论文档

Google 地图评论的局限性

尽管使用专业爬虫提取 Google 地图评论比自行开发爬虫更高效、更准确,但仍有几点限制需要注意。其中一个限制是,部分专业爬虫可能设有使用限制,这意味着您每天或每月只能抓取一定数量的评论。 另一项限制是,部分专业爬虫可能无法绕过 IP 封禁或 CAPTCHA 验证,这会导致在提取大量数据时难以避免错误。幸运的是,WebScrapingAPI 提供可轮换 IP 地址的住宅代理,从而为您提供全面保障,免除被封禁或受速率限制的担忧。 您需要注意的一点是,Google 地图上的评论通常采用自然语言撰写,若不借助自然语言处理技术,将难以对其进行分析和解读。

结论

总而言之,抓取谷歌地图评论对企业、研究人员及个人而言都是一种有价值的工具。它能帮助您大规模收集数据,并针对不同目的进行分析。但需注意,抓取谷歌地图评论存在诸多限制,包括使用限制、验证码、IP封禁以及自然语言处理等。 使用专业的爬虫工具可以提高流程的效率和准确性,并帮助您克服部分限制。总体而言,抓取谷歌地图评论可以提供有用的信息,但操作时务必谨慎小心。

关于作者
Andrei Ogiolan, 全栈开发工程师 @ WebScrapingAPI
Andrei Ogiolan全栈开发工程师

安德烈·奥吉奥兰(Andrei Ogiolan)是 WebScrapingAPI 的全栈开发工程师,他在产品各领域均有贡献,并协助为该平台构建可靠的工具和功能。

开始构建

准备好扩展您的数据收集规模了吗?

加入2,000多家企业,使用WebScrapingAPI在无需任何基础设施开销的情况下,以企业级规模提取网络数据。