返回博客
指南
安德烈·奥吉奥兰2023年2月28日阅读时间:7分钟

如何使用 Node.js 对谷歌购物附近的卖家进行网络抓取

如何使用 Node.js 对谷歌购物附近的卖家进行网络抓取

为什么应该使用专业的网页抓取工具?

开发自己的网页爬虫可能是一项耗时且复杂的任务。这不仅需要扎实的编程知识,还需对网页爬取的技术和方法有深入的了解。对于没有网页爬取经验的人来说,这可能是一项令人望而生畏的任务,而且开发一个能正常运行的爬虫所需的时间和资源,可能并不值得投入。

另一方面,使用像我们这样的专业爬虫工具具有多项优势。 首先,专业爬虫由该领域的专家设计和维护,确保其始终采用最新的技术和方法。这意味着它们更有可能应对现代网络的复杂性,例如验证码和动态网页。此外,专业爬虫通常内置自动IP轮换等功能,这有助于防止您的IP被正在爬取的网站封禁。

使用专业爬虫的另一个优势在于,它能为您节省大量时间和资源。 与其花费数周甚至数月时间自行开发爬虫,不如在此注册账号订阅我们的爬虫服务,立即开始抓取数据。这对需要快速提取数据以做出明智决策的企业,以及希望为个人项目抓取数据但又没有时间或资源自行开发爬虫的个人而言,尤为有益。

什么是 Google 购物“附近商家”?

“Google 购物:附近销售该商品的商家”是一项功能,可帮助用户查找附近销售特定商品的零售店。该功能在 Google 购物网站和移动应用上均可使用,用户通过它搜索商品后,即可查看附近销售该商品的商家列表。这些信息包括店铺名称、距离、地址,以及店铺当前的营业状态(营业中或休息中)。

抓取Google购物中“附近卖家”的数据,对于希望深入了解本地零售市场的企业和个人而言大有裨益。通过抓取这些数据,企业可以更清楚地了解所在地区的竞争状况,并据此调整定价和库存。 此外,企业还可以利用这些数据发掘新的销售机会,例如联系目前尚未销售其产品的商店。对于个人而言,抓取Google购物中附近卖家的产品数据,既能帮助寻找最优惠的商品,也能找到离自己最近的商店。

我们的目标是什么样子的?

Google 购物“比较购买选项”表格中,列出了卖家、价格以及带有红色边框的“访问网站”按钮

设置

若要使用我们的 API 从 Google 购物中抓取附近的卖家信息,您需要准备好相应的工具。首先,您必须安装 Node.js。这是一种 JavaScript 运行时环境,允许您在服务器端运行 JavaScript,可从Node.js 官方网站下载。

此外,您需要一个 API 密钥才能使用我们的服务。您可以在此处注册账户并激活 SERP 服务来获取该密钥。

安装好 Node.js 并获取 API 密钥后,下一步是运行以下命令来创建一个 Node.js 脚本文件:

$ touch scraper.js 

然后将下面一行粘贴到文件中:

console.log("Hello World!")

然后运行以下命令

$ node scraper.js

如果您看到终端上显示 "Hello World!"(你好,世界!),这意味着 Node.js 已成功安装,您现在可以进入实际的刮擦部分。

让我们开始抓取 Google 购物中的附近卖家

环境配置完成后,您现在可以使用我们的 API 开始抓取 Google 购物“附近商家”中的商品。这是一个非常简单的过程,除了上述内容外,您只需获取您感兴趣的商品的商品 ID 即可。

提示:这就是如何从 Google Shopping 获取产品 ID 的方法:

某款电视的 Google 购物产品页面,浏览器地址栏中已突出显示产品 ID 部分

在完成 Node.js 的安装、获取 API 密钥以及获取产品 ID 之后,您现在已准备好开始进行数据抓取。接下来,您可以创建一个新的 JavaScript 文件,或者使用之前创建的文件,并导入 Node.js 的内置 `https` 模块,该模块允许您通过以下代码向 API 发送请求:

const https = require("https");

其次,您需要指定您的 API 密钥和您感兴趣的产品的 product_id 属性:

const API_KEY = "YOUR-API-KEY-HERE" // 您可以在此处注册获取一个

const PRODUCT_ID = "4887235756540435899"

接下来,您需要将这些信息作为选项对象传递,以便让我们的 API 知道您想要抓取的是哪款产品:

const options = {

 "method": "GET",

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

 "port": null,

 "path": `/v1?engine=google_product&api_key=${API_KEY}&product_id=${PRODUCT_ID}`,

 "headers": {}

};

最后,您需要使用所有这些信息向我们的 API 发起一次调用:

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 results = JSON.parse(body.toString());

    const nearbySellers = results.sellers_results.online_sellers;

    console.log(nearbySellers)

  });

});

req.end();

现在你只需运行你创建的脚本,然后等待结果即可:

$ node scraper.js

现在您应该可以收到结果了:

[

  {

    position: 1,

    name: 'Gamestop',

    link: 'https://www.google.com/url?q=https://www.gamestop.com/consoles-hardware/playstation-5/consoles/products/sony-playstation-5-digital-edition-console/225171.html%3Futm_source%3Dgoogle%26utm_medium%3Dfeeds%26utm_campaign%3Dunpaid_listings&sa=U&ved=0ahUKEwi27suDvtP8AhVkk2oFHXzfDeMQ2ykIZg&usg=AOvVaw3ZevYyiKByTyo_THSF1qUJ',

    additional_details: '460.5 mi · In stock at EulessToday: 10:00 AM - 9:00 PM',

    base_price: '$399.99',

    additional_price: { shipping: 'See website' },

    total_price: '$399.99',

    trusted: true

  },

  {

    position: 2,

    name: 'Gamestop',

    link: 'https://www.google.com/url?q=https://www.gamestop.com/consoles-hardware/playstation-5/consoles/products/sony-playstation-5-digital-edition-console/225171.html%3Futm_source%3Dgoogle%26utm_medium%3Dfeeds%26utm_campaign%3Dunpaid_listings&sa=U&ved=0ahUKEwi27suDvtP8AhVkk2oFHXzfDeMQ2ykIcw&usg=AOvVaw1QiXFtHB6-CApj-HDvbNxl',

    additional_details: '462.6 mi · In stock at ArlingtonToday: 11:00 AM - 8:00 PM',

    base_price: '',

    trusted: false

  },

  {

    position: 3,

    name: 'Gamestop',

    link: 'https://www.google.com/url?q=https://www.gamestop.com/consoles-hardware/playstation-5/consoles/products/sony-playstation-5-digital-edition-console/225171.html%3Futm_source%3Dgoogle%26utm_medium%3Dfeeds%26utm_campaign%3Dunpaid_listings&sa=U&ved=0ahUKEwi27suDvtP8AhVkk2oFHXzfDeMQ2ykIdg&usg=AOvVaw0CxoqlJzdEZ93B-6U-Jmuf',

    additional_details: '557.6 mi · In stock at HoustonToday: 12:00 PM - 9:00 PM',

    base_price: '',

    trusted: false

  },

  {

    position: 4,

    name: 'Gamestop',

    link: 'https://www.google.com/url?q=https://www.gamestop.com/consoles-hardware/playstation-5/consoles/products/sony-playstation-5-digital-edition-console/225171.html%3Futm_source%3Dgoogle%26utm_medium%3Dfeeds%26utm_campaign%3Dunpaid_listings&sa=U&ved=0ahUKEwi27suDvtP8AhVkk2oFHXzfDeMQ2ykIeQ&usg=AOvVaw2BAlgtL85g1mvOonMQK14U',

    additional_details: '568.6 mi · In stock at PasadenaToday: 12:00 PM - 9:00 PM',

    base_price: '',

    trusted: false

  },

  {

    position: 5,

    name: 'Gamestop',

    link: 'https://www.google.com/url?q=https://www.gamestop.com/consoles-hardware/playstation-5/consoles/products/sony-playstation-5-digital-edition-console/225171.html%3Futm_source%3Dgoogle%26utm_medium%3Dfeeds%26utm_campaign%3Dunpaid_listings&sa=U&ved=0ahUKEwi27suDvtP8AhVkk2oFHXzfDeMQ2ykIfA&usg=AOvVaw3mi7jMt3aMSJde0sQb9yjR',

    additional_details: '591.2 mi · In stock at San AntonioToday: 12:00 PM - 9:00 PM',

    base_price: '',

    trusted: false

  },

... 

]

您现已成功通过我们的 API 抓取了 Google 产品附近的卖家信息。您可以将获取的数据用于多种用途,例如价格比较、市场调研、SEO 优化等。如需了解更多信息以及其他六种编程语言的代码示例,请随时查阅我们的 Google 产品 API文档

Google 购物“附近商家”功能的局限性

通过抓取“Google 购物”中的附近商家来收集数据,是获取销售特定产品的本地零售商信息的一种有效方式。然而,这种方法也存在一些局限性。其中一个局限是,该功能返回的结果未必总是准确或最新的。 例如,某家被列为销售该产品的商店可能已售罄或不再销售该商品。此外,该功能可能无法涵盖所有销售该产品的本地零售商,导致用户可选范围受限。最后,Google 购物“附近卖家”栏目仅适用于部分产品和类别,因此用户可能无法为所有感兴趣的产品找到本地卖家。

结论

希望本文能为您提供有用的参考,助您通过 Node.js 配合我们的 API 开始抓取 Google 购物“附近商家”的数据。只需安装好 Node.js、获取我们的服务 API 密钥以及一个商品 ID,您就能立即获取价格和库存信息。这对希望在定价方面保持竞争力的企业,以及希望找到最优惠价格的消费者而言,都特别有用。

关于作者
安德烈·奥吉奥兰,全栈开发工程师 @ WebScrapingAPI
安德烈-奥吉奥兰全栈开发工程师

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

开始构建

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

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