阿里巴巴由前英语教师马云于 1999 年创立,现已发展成为全球电子商务领域的领导者。阿里巴巴凭借其综合平台,使供应商能够向广大国际受众展示其产品,同时为买家提供高效接触全球范围内的各种商品和供应商的渠道。
在这篇博客中,我们将探索如何使用 JavaScript 作为我们选择的编程语言来抓取阿里巴巴庞大的数据库。为了浏览潜在的块和验证码,我们将利用 爬虫库 API,确保有效且不间断的抓取过程。让我们深入了解从阿里巴巴获取有价值的数据和见解的细节。
目录 一、为什么要刮阿里巴巴
二.抓取阿里巴巴的两种方法
三.你能从阿里巴巴获得什么?
四.使用 Puppeteer 进行抓取
五、为什么使用 Crawlbase
六.使用 Crawling API 和 Cheerio 进行抓取
七、 结论
八. 经常问的问题
一、为什么要抄袭阿里巴巴? 阿里巴巴拥有 40 多个主要类别的广泛产品,涵盖消费电子、机械、服装等。通过抓取可以访问这个庞大的产品存储库,使企业能够收集有关市场趋势和产品可用性的宝贵见解。
阿里巴巴的买家遍布 190 多个国家和地区,每天为买家和供应商之间提供大量沟通。抓取这些交互数据可以为市场需求、供应商响应能力和新兴趋势提供有价值的见解。
来源
抓取阿里巴巴的搜索引擎结果页面 (SERP) 为企业提供了一系列优势:
采购: 通过抓取产品列表和供应商信息,企业可以有效地识别满足其采购需求的潜在供应商。价格监控: 抓取使企业能够跟踪特定产品的定价趋势,使他们能够做出明智的定价决策。市场调查: 从阿里巴巴 SERP 中抓取数据可以提供有价值的市场洞察,包括消费者偏好、产品受欢迎程度和新兴趋势。竞争对手分析: 通过抓取分析竞争对手的产品列表、定价策略和客户评论可以为企业的竞争策略提供信息。产品改进: 抓取允许企业从客户评论和产品描述中收集反馈,帮助产品开发和增强工作。二.抓取阿里巴巴的两种方法 在这个项目中,我们将介绍两种不同的方法来抓取阿里巴巴并提取相关数据进行分析:
1. 使用 Puppeteer 进行抓取:
我们将演示如何使用 Puppeteer 构建抓取工具,Puppeteer 是一个 Node.js 库,它提供了用于控制无头 Chrome 或 Chromium 实例的高级 API。 您将学习如何浏览阿里巴巴网站、与页面上的元素交互以及提取相关数据,例如产品信息、定价和供应商详细信息。 抓取的数据将以结构化格式保存,可以进一步处理和分析以获得见解。 2.利用Crawling API和Cheerio进行抓取:
我们将展示另一种使用阿里巴巴抓取数据的方法 抓取 API 与 Cheerio 结合使用,Cheerio 是一种快速、灵活且精益的服务器 jQuery 实现。 此方法将说明使用专用的爬行 API 进行网络抓取任务的优势,包括处理块、验证码和有效管理请求。 您将了解如何设置和利用 Crawling API 从阿里巴巴网站获取数据并使用 Cheerio 解析数据以提取相关信息。 将提供基于 Puppeteer 的方法和 Crawling API 方法之间的比较,以突出每种方法的差异和优点,强调使用 Crawling API 进行网页抓取任务的卓越性能和可靠性。 读完本博客后,您将深入了解如何使用 Puppeteer 和 Crawling API 与 Cheerio 有效地抓取阿里巴巴。这将允许您根据您的具体要求和偏好选择最合适的方法。
在深入编码过程之前,熟悉阿里巴巴搜索引擎结果页面(SERP)的 HTML 页面结构至关重要。通过检查 HTML 标记,我们可以识别以编程方式提取以下详细信息所需的关键元素。为了这个博客,我们将使用这个 阿里巴巴网址 举个例子。
为了找到我们想要在 HTML 代码中抓取的数据,我们需要使用 Web 浏览器的开发人员工具检查页面上的元素。以下是有关您可以在何处找到每条信息的一般指南:
标题: 通常,产品的标题包含在 <h3>
, <h4>
,或产品列表中类似的标题标签。价格: 价格通常在特定范围内找到 <div>
, <span>
或 <p>
具有指示它们包含价格信息的类或 ID 的元素。 i. 网址: 产品列表的 URL 通常包含在 <a>
(锚)标签,通常位于 href 属性中。产品图片: 图像通常位于 <img>
标签,这些标签的 src 属性保存图像的 URL。店名: 商店名称可以在特定元素中找到,例如 <div>
, <span>
或 <a>
标签,通常带有类或 ID,表明它们包含商店信息。商店链接: 与产品 URL 类似,商店链接通常包含在 <a>
标签,通常位于 href 属性中。最小项目: 有关最低订购量的信息在 HTML 代码中的位置可能有所不同。查找指示最低订单要求的特定元素或文本。结果数量: 此信息通常显示在搜索结果页面的顶部或底部,并且可能位于 <div>
或其他具有唯一标识符的容器。一旦确定了包含所需数据的相关 HTML 元素,您就需要编写代码,根据这些元素的结构、类名、ID 或其他属性来选择这些元素,然后从这些元素中检索文本或属性值。我们将在本博客的下一部分向您展示它是如何完成的。
四.使用 Puppeteer 进行抓取 在本节中,我们将指导您如何使用 Puppeteer 来抓取阿里巴巴的 SERP。首先,我们需要建立一个 Node.js 项目并安装 Puppeteer 包。请按照以下步骤操作:
为您的项目创建一个新目录: 此命令将创建一个名为的空文件夹 alibaba-serp-scraper
.
导航到新创建的目录: 1 cd 阿里巴巴-serp-scraper && npm i puppeteer
通过使用此命令,我们将在目录中导航并将 puppeteer 包(包括其依赖项)安装到您的项目中。
创建一个名为 index.js 的新 JavaScript 文件,我们将在其中编写抓取工具的代码: 此命令在项目目录中创建一个空的 index.js 文件,您可以在其中编写 Puppeteer scraper 代码。
现在我们已经建立了我们的项目并安装了 Puppeteer,我们可以继续在 index.js 文件中编写抓取代码以从阿里巴巴的 SERP 中提取数据。
研究下面的代码并将其复制到您的 index.js 文件中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 常量 傀儡师= 要求 (‘傀儡师’ ), FS = 要求 ('fs' ); 异步 功能 抓取阿里巴巴SERP (搜索字符串 ){ 常量 浏览器= 等待 木偶师。发射 () 页 = 等待 浏览器。新的一页 (); 等待 页面。转到 (`https://www.alibaba.com/trade/search?SearchText=${searchString.replaceAll('' , '+' )} ` ); 等待 页面。等待选择器 ('.seb-分页' ); 常量 结果= 等待 页面。评估 (() => { 回报 排列 .from (文件 .查询选择器全部 ('.offer-list-wrapper .J-search-card-wrapper' ))。地图 ((列表、索引 ) => ({ 位置 :索引+ 1 , 标题 : 列表。查询选择器 ('[数据-spm =“d_title”]' )?。文本内容 , 网址 : `https:${列表.querySelector(“[数据-spm='d_title']” )?.getAttribute('href' )} ` , 车资 : 列表。查询选择器 ('.search-card-e-price-main' )?。文本内容 , 已验证 : 列表。查询选择器 ('.验证供应商图标' )? true : false , 图片 : `https:${列表.querySelector('.search-card-e-slider__img' )?.getAttribute('源代码' )} ` , 最小项目 : 列表。查询选择器 ('.search-card-m-sale-features__item' )?。文本内容 , 店名 : 列表。查询选择器 ('.搜索卡电子公司' )?。文本内容 , 商店链接 : `https:${列表.querySelector('.搜索卡电子公司' )?.getAttribute('href' )} ` , 评论 : 列表。查询选择器 ('.搜索卡电子评论' )?。文本内容 , })); }); 结果数 = 等待 页面。评估 (() => 文件 .查询选择器 ('.seb-refine-result_all' )?。文本内容 ); 等待 浏览器。关闭 (); 领事 .日志 ({ 结果, 结果数 }, '结果' ); fs。写文件同步 ('阿里巴巴-serp.json' , JSON .串化 ({ 结果, 结果数 }, 空 , 2 )); 回报 结果; } 抓取阿里巴巴SERP (“三星 s24 ultra” );
使用一个简单的命令执行上面的代码:
这应该以易于阅读的结构为您提供 JSON 数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 { “结果” : [ { “位置” : 1 , “标题” : “三星 Galaxy S24 Ultra Plus 手机壳 Tpu PC 防震保护套 适合三星 Galaxy S24 Plus” , “网址” : “https://www.alibaba.com/product-detail/Mobile-Phone-Case-For-Samsung-Galaxy_1600969904884.html?s=p” , “价钱” : “1.29 美元 - 1.69 美元” , “已验证” : true , “图片” : "https://s.alicdn.com/@sc04/kf/Hcdcc7db446e9420f9378c0ec3482037bk.png_300x300.png" , “最小项目” : “运费:1.35 美元/件” , “商店名称” : “广州市骏博电子有限公司” , “商店链接” : “https://gzjunbo.en.alibaba.com/company_profile.html” , “评论” : “4.9/5.0 (68)” } , { “位置” : 2 , “标题” : “三星 S21 湿式隐私水凝胶 Tpu 薄膜全覆盖防间谍屏幕保护膜” , “网址” : “https://www.alibaba.com/product-detail/Wet-Applied-Privacy-Hydrogel-Tpu-Film_62089598725.html?s=p” , “价钱” : “1.18 美元 - 1.40 美元” , “已验证” : true , “图片” : "https://s.alicdn.com/@sc04/kf/H7ac0cb2e940044a3b83d3c6bcde321b3J.jpg_300x300.jpg" , “最小项目” : “最小订购量:100 件” , “商店名称” : “深圳市普利金科技有限公司” , “商店链接” : “https://pulikin.en.alibaba.com/company_profile.html” , “评论” : “4.4/5.0 (8)” } , { “位置” : 3 , “标题” : “全胶优质柔软防间谍隐私屏幕膜防指纹适用于三星 S24 S23 S22 S21 Plus Ultra Note 20 Ultra” , “网址” : “https://www.alibaba.com/product-detail/Full-Glue-Good-Quality-Soft-Anti_1601006825211.html?s=p” , “价钱” : “0.79 美元” , “已验证” : false , “图片” : "https://s.alicdn.com/@sc04/kf/H651591d2ef254ad284d3556562b27c26G.jpg_300x300.jpg" , “最小项目” : “运费:3.68 美元/件” , “商店名称” : “广东益创高科电子科技有限公司” , “商店链接” : “https://cngdyichuang.en.alibaba.com/company_profile.html” } ] }
五、为什么使用 Crawlbase 在抓取网站时,您可能会遇到机器人检测措施,导致您的抓取工具最终被阻止。为了降低这种风险,隐藏您的真实 IP 地址至关重要。当使用一个 代理池 可能会完成工作,但自行构建和管理这样的系统可能既耗时又昂贵。这就是 抓取 API 进场。
Crawlbase 的 Crawling API 构建于数百万个 数据中心和住宅 IP ,为您提供各种 IP 地址以用于每个请求。这 IP地址轮换 有助于避免检测并增强抓取过程。此外,该API还与人工智能技术集成,使其能够有效地模仿人类与目标网站的基本交互。
通过利用 Crawling API,您可以增强抓取能力, 解除封锁网站 ,最大限度地降低区块和验证码的风险,并确保更流畅、更可靠的抓取体验。
六.使用 Crawling API 和 Cheerio 进行抓取 要在我们创建的代码中使用爬网 API,第一步是注册并获取 API 密钥。按着这些次序:
注册 Crawlbase API: 通过启动 报名 用于 Crawlbase API。导航到他们的网站并按照注册流程创建一个帐户。获取API凭证: 注册后,从您的网站获取您的 API 凭证 账户文件 。这些凭据对于向爬网 API 服务发出请求至关重要。API 密钥和秘密: 您的 API 凭证通常由 API 密钥和密钥组成。这些凭据验证您对爬网 API 服务的请求。保证凭证安全: 确保确保 API 凭据的安全,因为它们是网络抓取过程的关键部分。避免公开共享它们或在代码中公开它们。获得 Crawling API 的 API 令牌后,您可以继续设置编码 环境使用以下命令:
创建目录: 此命令创建一个名为的新目录 alibaba-serp-scraper
我们将在其中组织项目文件。导航至目录: 进入新创建的目录以执行进一步的操作。创建 JavaScript 文件: 此命令创建一个名为的新 JavaScript 文件 index.js
我们将在其中编写抓取代码。安装依赖项: 此命令安装必要的依赖项,包括 crawlbase
用于与 Crawling API 交互,并与 Cheerio 进行解析 HTML。完成后,您现在可以复制下面的代码并将其粘贴到您的 index.js
文件。请务必先研究它以理解每一行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 常量 { 抓取API } = 要求 ('crawlbase' ), 欢呼= 要求 ('cheerio' ), FS = 要求 ('fs' ); 常量 接口= 新 抓取API ({ 象征 : 'Crawlbase_Token' }), 阿里巴巴SerpURL = 'https://www.alibaba.com/trade/search?SearchText=samsung+s24+ultra' ; API .得到 (阿里巴巴SerpURL) .然后 ((响应 ) => { 常量 抓取数据 = 从 HTML 解析数据 (回复。身体 ); fs。写文件同步 ('alibaba_scraped.json' , JSON .串化 ({ 刮数据 }, 空 , 2 )); }) .捕捉 ((错误 ) => { 领事 .日志 (错误, '错误' ); }); 功能 从 HTML 解析数据 (HTML ){ 尝试 { 常量 $ = 快乐。加载 (html), 抓取数据 = { 结果 :[], 结果数 : '' , }; 刮取的数据['结果数' ] = $('.seb-refine-result_all' ).文本 ()。修剪 (); $('.offer-list-wrapper .J-search-card-wrapper' ).每 ((_, 元素 ) => { 常量 标题 = $(元素).发现 (“[数据-spm='d_title']” ).文本 () url = $(元素).发现 (“[数据-spm='d_title']” ).属性 ('href' ), 价格 = $(元素).发现 ('.search-card-e-price-main' ).文本 () 图像 = $(元素).发现 ('.search-card-e-slider__img' ).属性 ('源代码' ), minItem = $(元素).发现 ('.search-card-m-sale-features__item' ).文本 () 商店名称 = $(元素).发现 ('.搜索卡电子公司' ).文本 () 商店链接 = $(元素).发现 ('.搜索卡电子公司' ).属性 ('href' ), 评论 = $(元素).发现 ('.搜索卡电子评论' ).文本 (); 刮取的数据['结果' ].推 ({ 标题, 网址 : 网址。包括 ('http' )?网址: `https:${网址} ` , 价钱, 图片 : 图像。包括 ('http' )?图像 : `https:${图片} ` , 最小项目, 店铺名称, 商店链接 : 商店链接。包括 ('http' )?店铺链接: `https:${商店链接} ` , 评论, }); }); 回报 刮取的数据; } 捕捉 (呃) { 回报 呃; } }
同样,您可以使用以下命令执行代码:
这将以可读的 JSON 格式结构提供响应。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 { “抓取的数据” : { “结果” : [ { “标题” : 《Cyberblue S23 ULTRA 5G 7.3英寸原装手机16GB+512GB大内存智能手机美颜相机游戏手机》 , “网址” : "https://www.alibaba.com/product-detail/Cyberblue-S23-ULTRA-5G-7-3Inch_1600881085197.html?s=p" , “价钱” : “69.00 美元 - 83.00 美元” , “图片” : "https://s.alicdn.com/@sc04/kf/H72f8bd22d4b24a00b0423e45e8390ab0S.jpg_300x300.jpg" , “最小项目” : “运费:30.28 美元/件最小订单:1 件 19 月 XNUMX 日之前交货” , “商店名称” : “深圳市赛博蓝电子有限公司” , “商店链接” : “https://yingzhengcyberblue.en.alibaba.com/company_profile.html” , “评论” : “4.1/5.0 (77)” } , { “标题” : “硬质 PC 防震手机壳适用于三星 Galaxy S23 S24 磁性 Magsafed 保护套适用于三星 S22 S21 Ultra 带支架保护壳” , “网址” : “https://www.alibaba.com/product-detail/Hard-PC-Shockproof-Phone-Cases-For_1600897902221.html?s=p” , “价钱” : “1.39 美元 - 2.50 美元” , “图片” : "https://s.alicdn.com/@sc04/kf/H5aa0f54078b94adab6c856dcd0847ee1t.jpg_300x300.jpg" , “最小项目” : “最小订单:50.0 件轻松退货” , “商店名称” : “广州市骏博电子有限公司” , “商店链接” : “https://junbochina.en.alibaba.com/company_profile.html” , “评论” : “4.9/5.0 (36)” } , { “标题” : “三星 Galaxy S24 Ultra Plus 手机壳 Tpu PC 防震保护套 适合三星 Galaxy S24 Plus” , “网址” : “https://www.alibaba.com/product-detail/Mobile-Phone-Case-For-Samsung-Galaxy_1600969904884.html?s=p” , “价钱” : “1.29 美元 - 1.69 美元” , “图片” : "https://s.alicdn.com/@sc04/kf/Hcdcc7db446e9420f9378c0ec3482037bk.png_300x300.png" , “最小项目” : “运费:0.62 美元/件最少订购:50 件” , “商店名称” : “广州市骏博电子有限公司” , “商店链接” : “https://gzjunbo.en.alibaba.com/company_profile.html” , “评论” : “4.9/5.0 (68)” } , { “标题” : “防震防黄增强保护彩虹边框手机壳适用于三星 S24 S23 Ultra 手机壳适用于 Iphone 15 Pro Max” , “网址” : “https://www.alibaba.com/product-detail/Shockproof-Anti-Yellow-Enhanced-Protection-Rainbow_1601030144430.html?s=p” , “价钱” : “1.87 美元 - 2.20 美元” , “图片” : "https://s.alicdn.com/@sc04/kf/Hd910ee3c71c34b3c98f97f4275919466H.jpg_300x300.jpg" , “最小项目” : “最小订购量:20 件” , “商店名称” : “佛山市大熊电器科技有限公司” , “商店链接” : “https://bigbearcase.en.alibaba.com/company_profile.html” , “评论” : “4.8/5.0 (18)” } , { “标题” : “热门产品 2023 年新品 USB c 25W type c 充电器 EU PD 原装充电器 适用于三星 Galaxy S23 Ultra” , “网址” : “https://www.alibaba.com/product-detail/Trending-products-2023-new-arrivals-Usb_1600832251082.html?s=p” , “价钱” : “2.80 美元 - 3.20 美元” , “图片” : "https://s.alicdn.com/@sc04/kf/H2d873e4d01ef41bf86dfe200fc2e1f64C.jpg_300x300.jpg" , “最小项目” : “最小订购量:20 件” , “商店名称” : “深圳市诺诚达电子有限公司” , “商店链接” : “https://ncdatech.en.alibaba.com/company_profile.html” , “评论” : “4.9/5.0 (155)” } , { “标题” : “手机原装 S24 Ultra 16GB+512GB 智能手机 7 英寸解锁双卡 5G 手机 Android 13.0 手机” , “网址” : “https://www.alibaba.com/product-detail/Cellphone-Original-S24-Ultra-16GB-512GB_1600999468198.html” , “价钱” : “43.42 美元 - 54.47 美元” , “图片” : "https://s.alicdn.com/@sc04/kf/H3aba463770a64295bec18829bdf8eccbM.jpg_300x300.jpg" , “最小项目” : “最小订单:1 件轻松退货” , “商店名称” : “夹江思祥家居装饰工程有限公司” , “商店链接” : “https://sxjzs.en.alibaba.com/company_profile.html” , “评论” : “3.0/5.0 (36)” } , { “标题” : “热销 S24 Ultra 7.0 英寸 Android 13.0 12GB+512GB 48MP+72MP 7000 mA 面部解锁 5G 智能手机” , “网址” : “https://www.alibaba.com/product-detail/Hot- sell-S24-Ultra-7-0_1600969407142.html” , “价钱” : “43.42 美元 - 54.47 美元” , “图片” : "https://s.alicdn.com/@sc04/kf/H771126c0475c4a3d9ee7842740b0cf4an.jpg_300x300.jpg" , “最小项目” : “最小订购量:1 件” , “商店名称” : “东莞市中富电子科技有限公司” , “商店链接” : “https://fukadi.en.alibaba.com/company_profile.html” , “评论” : “3.3/5.0 (197)” } ] } }
七、 结论 总之,本博客提供了使用两种不同方法抓取阿里巴巴搜索结果页面的详细见解: 木偶戏 和 使用 Cheerio 抓取 API 。两种方法都有独特的优点和注意事项。
使用 Puppeteer 时,您可以直接控制无头浏览器环境,从而允许与网页进行动态交互。这种方式适用于需要精确的用户交互或者复杂的 JavaScript 渲染的场景。
另一方面,利用 Cheerio 的 Crawling API 为网页抓取任务提供了更强大、更可靠的解决方案。通过利用池 旋转代理 借助人工智能的能力,爬行API可以有效避免机器人检测措施,最大限度地降低区块和验证码的风险,并增强抓取性能。
对于那些寻求更可靠和可扩展的抓取工具的人来说,集成 Crawling API 应该是首选。它提供了必要的基础设施和功能,以确保不间断的抓取操作,同时保持数据完整性和合规性。
此外,本文档中提供的代码可以作为宝贵的资源来增强您的抓取知识,而不仅仅是阿里巴巴。您可以自由地调整和扩展代码以从各个网站抓取数据,从而为您的项目和业务需求提取有价值的见解。
无论您选择 Puppeteer 还是 Cheerio 的 Crawling API,本文都会为您提供工具和知识,帮助您开发有效的抓取解决方案并释放 Web 数据的潜力。
如果您想查看更多类似的博客,我们建议您查看以下链接:
如何抓取百思买产品数据 如何抓取 Stackoverflow 如何抓取 Target.com 如何抓取全球速卖通搜索页面
如果您对 Crawlbase 有疑问或疑虑,请随时 联系支持团队 .
八. 经常问的问题 问:我可以使用其他编程语言来集成 Crawling API 并构建我的抓取工具吗? A. 是的,您可以灵活地使用各种编程语言和解析库来集成 Crawling API 并构建您的抓取工具。虽然本文档中演示了 Puppeteer 和 Cheerio 作为如何抓取阿里巴巴搜索结果页面的示例,但它们并不是唯一可用于网络抓取任务的工具。例如,Python 提供了流行的库,例如 美丽汤 , Scrapy 及 要求 ,广泛用于抓取和解析 HTML 内容。
问:Crawlbase 有自己的抓取工具吗? A. 是的,Crawlbase 通过其提供了内置的抓取工具 刮板API 。通过将 API 请求的端点更改为 https://api.crawlbase.com/scraper
,您可以直接从 API 接收解析后的响应。该产品对于喜欢更简单的网页抓取方法的用户特别有用,因为它消除了手动解析 HTML 内容的需要。但是,需要注意的是,自动解析功能可能并不适合所有网站,因为支持的网站有限。
如果您有兴趣了解它的威力 刮板API 在实际操作中,我们建议您查看此博客文章: 使用 Scraper API 抓取 Bing 搜索结果 。该博客演示了使用 Puppeteer 和利用 Scraper API 抓取 Bing 搜索结果之间的比较,展示了 Scraper API 在各种抓取场景中的效率和有效性。