返回博客
指南
加布里埃尔·乔奇2021年8月10日阅读时间:5分钟

如何抓取eBay页面以获取价格情报

如何抓取eBay页面以获取价格情报

从eBay抓取数据如何助力您的网店

eBay 是美国第二大在线电商平台,占据了19.7%的市场份额。凭借1.82亿活跃用户,eBay 是我们进行价格情报分析的最佳平台之一。

在这个示例中,我们将仅抓取产品的价格,但eBay堪称数据宝库。您还可以抓取评论区,提取负面关键词,进行情感分析,从而找出顾客对所购产品不满的原因。

您还可以分析“浏览过此商品的顾客还浏览了”这一板块,以此了解顾客的需求。您可以利用这些信息为店铺添加新商品,或推出包含更多商品的折扣套装。顾客一定会喜欢这些!

如何使用 WebScrapingAPI 抓取 eBay 数据

网络爬虫面临的最大难题之一,就是如何避免被目标网站封禁。幸运的是,只要使用合适的工具,您就无需为此担忧。在这种情况下,WebScrapingAPI是最佳解决方案,原因很简单,有三点:

  • 我们的免费套餐每月提供 1,000 次请求,无需绑定银行卡。
  • 该 API 拥有一个包含 1 亿多个轮换 IP 的代理池,可确保请求互不重叠。
  • 只需一行代码,即可与他们的 API 集成。

你可能会好奇,为什么我们要使用爬虫API,而不是自己开发一个。原因很简单:从头开始开发一个爬虫工具可能需要几周时间

最大的问题不在于开发工具本身,而在于对其进行微调,以免网站将其误判为机器人。

应用程序接口访问密钥和身份验证

访问WebScrapingAPI 网站并注册一个账户。您将获得一个 API 密钥和 1,000 次免费请求。

安装依赖项

我们的这个小项目非常轻量级,仅需两个依赖项:axioscheerio。Axios 是一个基于 Promise 的 Node.JS HTTP 客户端。我们使用该库来调用 WebScrapingAPI。第二个库 cheerio 则是 jQuery 在服务器端的精简实现,我们用它来解析产品页面。请使用以下命令安装这些依赖项:

npm install axios cheerio

启动该项目

创建一个名为 index.js 的文件,并将以下代码粘贴进去:

const cheerio = require('cheerio');
const axios = require('axios');

const api_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const product_url = 'https://www.ebay.com/itm/174620280276?epid=4444&hash=item28a82e05d4:g:UpMAAOSwfY5gYDr6';
const api_url = `https://api.webscrapingapi.com/v1?api_key=${api_key}&url=${encodeURIComponent(product_url)}`;
const hour_in_ms = 1000 * 60 * 60;

let product_price = null;

const check_price = async () => {

	// Scrape the document

	// Parse the document

	// Process the results

	// Check for any price change in one hour
	setTimeout(check_price, hour_in_ms)

}

(async () => check_price())()

如您所见,我们使用了一个带有超时设置的递归函数,每小时抓取一次产品页面,并检查价格是否有变动。

抓取页面

请用以下代码替换/刮取该文档

let response;

try {
	response = await axios.get(api_url);
} catch (error) {
	console.log(error);
	process.exit();
}

const $ = cheerio.load(response.data);

该代码使用 WebScrapingAPI 抓取 eBay 商品页面,并将结果转换为一个 cheerio 实例。

检查源代码

我们抓取了整个产品页面,但只需要产品价格。我们可以使用 cheerio 实例来获取价格值。产品价格的选择器是#mainContent [itemprop="price"]

解析 HTML

将 // 替换为以下代码:

let price = $('#mainContent [itemprop="price"]').html()

处理结果

价格以以下格式呈现:货币符号 金额。我们需要提取其中的金额部分。请用以下代码替换// 处理结果

price = parseInt(price
	.split(' ')[1]
	.replace('$', '')
	.replace(' ', '')
	.split(',').join('')
	.split('.')[0])

if(!product_price) {
	console.log(`Initial product price:`, price)
} else {
	if(product_price !== price) {
    		console.log('New price for product:', price)
	}
}

product_price = price

该代码将通过执行以下操作来清理价格:

  • 移除货币(美元)
  • 删除货币符号 ($)
  • 删除所有空格 ( )
  • 从数字中删除逗号
  • 去除小数

解析完价格后,我们会记录初始价格,或者如果价格在两次抓取之间发生了变化,则记录新价格。

结论

只需几行代码,再加上WebScrapingAPI这样一款出色的工具,我们就成功编写了一个脚本,可以从eBay获取任意商品的价格。以此为基础,可能性无穷无尽。你可以进一步优化这个脚本,实现以下改进:

  • 抓取产品标题以便更轻松地进行价格分类
  • 抓取多款商品并比较价格
  • 抓取另一个eBay网站(例如ebay.de或ebay.ca),并比较同一产品的价格
  • 反其道而行之,抓取亚马逊的产品页面,并对比两家网站上同一款产品的价格
  • 实现电子邮件通知;建议使用nodemailer来实现这一功能
  • 实现 Slack 通知;您可以使用此库来完成此任务

这款针对实际应用场景的解决方案最棒的一点在于,您无需花费金钱或宝贵的时间即可完成所有操作。这是因为WebScrapingAPI 提供为期两周的免费试用,让您能够免费使用其所有功能!

关于作者
加布里埃尔·乔奇,WebScrapingAPI 全栈开发工程师
加布里埃尔-西奥奇全栈开发工程师

加布里埃尔·乔奇(Gabriel Cioci)是 WebScrapingAPI 的全栈开发工程师,负责构建和维护该平台的网站、用户面板以及面向用户的核心功能模块。

开始构建

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

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