抓取eBay数据如何助力你的网店
eBay是美国第二大在线电商平台,占据19.7%的市场份额。凭借1.82亿活跃用户,eBay是我们进行价格情报分析的最佳网站之一。
在本示例中,我们将仅抓取商品价格,但eBay本身就是一座数据宝库。你还可以抓取评论区、提取负面关键词、进行情感分析,从而查明顾客对所购商品不满的原因。
您还可以抓取“浏览过此商品的人也浏览了”板块,以此洞察客户需求。利用这些信息,您可以为店铺上架新品,或创建包含更多商品的折扣套装。顾客一定会喜欢!
如何使用 WebScrapingAPI 抓取 eBay 数据
网络爬取面临的最大障碍之一,就是避免被目标网站封禁。幸运的是,只要拥有合适的工具,您就无需为此担忧。在这一点上,WebScrapingAPI是最佳解决方案,原因很简单:
- 我们的免费套餐每月提供 1,000 次请求,无需信用卡。
- 该 API 拥有超过 1 亿个轮换 IP 的代理池,确保请求互不冲突。
- 仅需一行代码即可集成我们的 API。
您可能会疑惑,为何我们选择使用爬取 API 而不是自行开发。原因很简单:从零开始构建爬取工具可能需要数周时间。
最大的难题并非开发工具本身,而是对其进行精细调优,以避免网站将其标记为机器人。
API 访问密钥与认证
访问 WebScrapingAPI 网站并创建账户。您将获得一个 API 密钥和 1,000 次免费请求。
安装依赖项
初始化项目
创建一个 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())()
如您所见,我们使用了一个带超时设置的递归函数,每小时抓取一次产品页面并检查价格是否发生变化。
抓取页面
将 // Scrape the document 替换为以下代码:
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
该代码将通过以下操作对价格进行清理:
- 移除货币符号(US)
- 移除货币符号 ($)
- 移除所有空格 ( )
- 从数字中移除逗号
- 去除小数点
解析价格后,我们会记录初始价格,或者如果价格在两次抓取之间发生了变化,则记录新价格。
结论
借助几行代码和 WebScrapingAPI 这样的强大工具,我们成功编写了一个脚本,能够从 eBay 获取任意商品的价格。以此为基础,应用前景无限。您可以进一步优化脚本,实现以下改进:
- 抓取商品标题以便更轻松地分类价格
- 抓取多个商品并比较价格
- 抓取其他 eBay 网站(如 ebay.de 或 ebay.ca)并比较同一商品的价格
- 反其道而行之,抓取亚马逊商品页面,并对比两家网站上同一商品的价格
- 实现电子邮件通知;建议使用 nodemailer 来完成此功能
- 实现 Slack 通知;您可以使用此库来完成该任务
针对此真实用例的解决方案最棒的一点在于,您无需花费金钱或宝贵时间即可完成所有操作。这是因为 WebScrapingAPI 提供为期两周的免费试用,让您能够免费使用其所有功能!




