`
游牧民族
  • 浏览: 8154 次
博客专栏
0e19309f-3048-3b23-8de5-1a8a92dd847a
爬虫开发教程
浏览量:0
社区版块
存档分类
最新评论

手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫

阅读更多

系列教程

手把手教你写电商爬虫-第一课 找个软柿子捏捏

 

如果没有看过第一课的朋友,请先移步第一课,第一课讲了一些基础性的东西,通过软柿子"切糕王子"这个电商网站好好的练了一次手,相信大家都应该对写爬虫的流程有了一个大概的了解,那么这课咱们就话不多说,正式上战场,对垒尚妆网。

 

首先,向我们被爬网站致敬,没有他们提供数据,我们更是无从爬起,所以先安利一下尚妆网:

经营化妆品时尚购物,大数据为驱动,并依托智能首饰为入口的新一代智慧美妆正品电子商务平台。其创始团队来自天猫、支付宝、欧莱雅、薇姿等互联网公司和化妆品集团。

 

好吧,我很懒,直接从百度知道里抄过来的,不过不代表我没有诚意。OK,言归正传,我们先把我们的工具包拿出来:

1、神箭手云爬虫框架,2、Chrome浏览器 3、Chrome的插件XpathHelper 不知道是干嘛的同学请移步第一课

古代战士上战场前,必须先好好的观察对手,所谓知己知彼,百战不殆。我们先来观察一下尚妆网

 

从首页大家能看出什么?说美女很美的,还有说美女表情很到位的同学,你们可以先回家了。

剩下的同学,我们继续了:

可 以看出,作为一个完善的电商网站,尚妆网有着普通电商网站所拥有的主要的元素,包括分类,分页,主题等等。首先我们要确定我们希望要爬取哪一类数据,当然 作为爬虫来说,全部爬下来不是不行,不过对于做实验来说,就没必要了。好,我们假设:我们要爬护肤里的面膜品类所有商品,价格和销量,至于为什么是面膜, 你们猜呢?

 

废话太多了,我们开始爬虫三步走,跟着我再背诵一遍:1、选入口Url 2、限定内容页和中间页 3、写内容页抽取规则

1、选定入口url

这个简单,找到面膜页面的地址:

http://list.showjoy.com/search/?q=cateIds%3A1,cateName%3A%E9%9D%A2%E8%86%9C

好,就是它了。

 

2、区分内容页和中间页

好,重点来了,尚妆网的列表页面,是通过ajax动态加载了,这个怎么实现呢?我们先不着急,先看下内容页

http://item.showjoy.com/sku/26551.html

http://item.showjoy.com/sku/100374.html

 

内容页很简单,我们直接提取成正则表达式

http://item\\.showjoy\\.com/sku/\\d+\\.html

 

那么列表页呢?首先,第一个当然是:

http://list.showjoy.com/search/?q=cateIds%3A1,cateName%3A%E9%9D%A2%E8%86%9C

 

下一页的链接是什么呢?这个时候就需要借助chrome浏览器的开发者工具,我们打开工具,切换到network选项卡,向下滑动加载下一页,可以看到展示出的连接地址:

 

注意,可以忽略掉png这些图片的文件,直接看到下一页的连接,我们将链接复制出来:

http://list.showjoy.com/search/?q=cateIds%3A1,cateName%3A%E9%9D%A2%E8%86%9C&stock=1&page=4&_synToken=59a6c555b0947486769f35d010353cd5

 

看着好像很复杂,不过page我认识,其他的可以去掉吗?我们试一下访问

http://list.showjoy.com/search/?q=cateIds%3A1,cateName%3A%E9%9D%A2%E8%86%9C&page=4

 

貌似正常打开,而且也可以显示不同的商品,就此我们可以看出来,这个ajax加载下一页不过是一个纸老虎,根本没什么可怕的。我们将这个提取成正则表达式,另外 值得注意的是,由于我们第一页可能是没有page的,所以也需要考虑没有page参数的情况

http://list\\.showjoy\\.com/search/\\?q=cateIds%3A1,cateName%3A%E9%9D%A2%E8%86%9C(&page=\\d+)?

 

这里再次提醒大家,注意正则的点和问好都是要转义的,并且转义需要两个\,好,第二步大功告成。

 

第 三步:就是写内容页的抽取规则了,我们就抽取商品名称,评价数和成交数这三项数据吧,有人要问了,为啥不要价格呢。我只能说,too young too native,你打开商品页面的时候,有没有注意到价格的地方也一个快速的异步加载。考虑到咱们毕竟才第二课,而且刚刚还没那个ajax搞得虎躯一震,差 一点把这节课改成第三课,所以咱们这里先降低点难度,下一课咱们用一节课的时间来探讨下这个价格该怎么提取。

 

 

根据前面课程教的方案,我们同样的方法,写出xpath:

 

标题://h3[contains(@class ,"choose-hd")]

评价://div[contains(@class ,"dtabs-hd")]/ul/li[2]

成交记录://div[contains(@class ,"dtabs-hd")]/ul/li[3]

通过xpath helper进行验证之后没有问题,这样我们可以组合代码得到下面的结果

 

var configs = {  
        domains: ["www.showjoy.com","list.showjoy.com","item.showjoy.com"],  
        scanUrls: ["http://list.showjoy.com/search/?q=cateIds%3A1,cateName%3A%E9%9D%A2%E8%86%9C"],  
        contentUrlRegexes: ["http://item\\.showjoy\\.com/sku/\\d+\\.html"],  
        helperUrlRegexes: ["http://list\\.showjoy\\.com/search/\\?q=cateIds%3A1,cateName%3A%E9%9D%A2%E8%86%9C(\\&page=\\d+)?"],//可留空  
        fields: [  
            {  
                // 第一个抽取项  
                name: "title",  
                selector: "//h3[contains(@class,'choose-hd')]",//默认使用XPath  
                required: true //是否不能为空  
            },  
            {  
                // 第二个抽取项  
                name: "comment",  
                selector: "//div[contains(@class,'dtabs-hd')]/ul/li[2]",//使用正则的抽取规则  
                required: false //是否不能为空  
            },  
            {  
                // 第三个抽取项  
                name: "sales",  
                selector: "//div[contains(@class,'dtabs-hd')]/ul/li[3]",//使用正则的抽取规则  
                required: false //是否不能为空  
            }  
        ]  
    };  
      
    start(configs);  

 


可以看到在domains里 我填入了三个域名,这里是一定要注意的,因为他的列表页和详情页的域名都不一致,因此需要把每一个域名都写进去。

 

好了,代码运行正常,但是启动任务之后发现,怎么第二页的内容没有采集到呢? 还有前面说的价格咱们也采集不到,到底还能不能愉快的玩耍了呢? 我们第三课就给大家讲讲如何解决ajax页面的url发现和ajax加载内容的提取。

 

对爬虫感兴趣的童鞋可以加企鹅群讨论:342953471。

0
1
分享到:
评论

相关推荐

    手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取

    在本节课中,我们会学习如何处理电商网站尚妆网的AJAX请求,以及如何提取动态加载的内容。这是一个非常实用的教程,因为AJAX技术广泛应用于现代网页中,而动态内容加载也是电商网站常见的技术之一。 首先,我们需要...

    手把手教你写电商爬虫-第一课 找个软柿子捏捏

    通过爬虫,可以快速有效地获取电商平台的商品信息、用户评价、价格动态、交易量等关键数据,这对于市场分析、竞品监测、价格监控等方面具有重要意义。本教程将引导初学者如何入门电商爬虫开发,以及相关的基础知识与...

    手把手教你学DSP--基于TMS320C55x光盘 + 书(高清).7z

    手把手教你学DSP--基于TMS320C55x光盘 (包括源代码 电路图PDF,DXP) + 基于TMS320C55x.PDF。比较适合刚入门,是一本DSP入门的好书。

    手把手教你学单片机--(如何学习单片机)

    手把手教你学单片机--(如何学习单片机)经典有用的资料

    手把手教你写python爬虫

    本教程“手把手教你写Python爬虫”将引导你逐步掌握这一技能。Python因其语法简洁、库资源丰富,成为爬虫开发的首选语言。下面,我们将深入探讨Python爬虫的核心概念、常用库以及实践技巧。 首先,你需要了解网络...

    手把手教你写 SQL Join 联接 -

    手把手教你写 SQL Join 联接 手把手教你写 SQL Join 联接 - Defonds 的专栏 - CSDN博客手把手教你写 SQL Join 联接 - Defonds 的专栏 - CSDN博客

    手把手教你学DSP--基于TMS320C55x光盘 含电路图+代码

    手把手教你学DSP--基于TMS320C55x光盘 含电路图+代码 陈泰红 出 版 社:北京航空航天大学出版社 本书(作者陈泰红、任胜杰、魏宇)以TMS320C55x系列高性能低功耗DSP为主,主要介绍了以数字信号处理器(DSP)为核心的...

    手把手教你springboot整合bootstrap-table、pagehelper实现表格生成、页面美化、客户端和服务端分页

    内容:手把手教你springboot整合bootstrap-table、pagehelper实现表格生成、页面美化、客户端和服务端分页(实战项目),博客原文讲解:https://blog.csdn.net/weixin_50369395/article/details/124334085

    手把手教你学51单片机-C语言版

    资源名称:手把手教你学51单片机-C语言版资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    手把手教你学DSP--TMS320F28335

    扫描版,全书454页完整版,带书签,虽是扫描版但足够清晰,不影响阅读

    手把手教你学51单片机-资源

    《手把手教你学51单片机》是宋雪松先生编写的一本深入浅出的单片机学习教程,特别适合初学者入门。51单片机是微控制器领域非常经典的一款芯片,由Intel公司推出,因其8051内核而得名,现在由许多厂商如Atmel、...

    手把手教你学DSP:基于TMS320F28335

    手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F...

    AIGC-电商应用实战线上课-教程网盘链接提取码下载.txt

    作为电商人 你是否也经常遇到这些问题? 拍摄沟通难,灯光租赁、场地费太贵,模特价格高 创作没思路,出图慢,灵感匮乏 不测款就上新,导致成本翻...第二章 Midjourney从入门到商业案例使用 ·参数分析·关键词讲解

    手把手教你写Python爬虫

    本教程将深入浅出地教你如何使用Python编写爬虫,让你从零基础快速入门。 首先,我们需要了解Python爬虫的基础知识。爬虫主要分为三个步骤:请求网页、解析网页和存储数据。Python中的`requests`库可以用来发送HTTP...

    手把手教你学51单片机C语言版PDF

    《手把手教你学51单片机C语言版》是一本专为初学者设计的教程,旨在帮助读者从零开始掌握51系列单片机的编程与应用。这本书由权威的电子技术教育平台www.kingst.org提供,是学习单片机C语言编程的宝贵资源。下面将...

    手把手教你学DSP--TMS320C281X光盘资料

    "手把手教你学DSP--TMS320C281X光盘资料" 这个标题表明这是一个教学资源,专注于数字信号处理(DSP)领域,特别是针对Texas Instruments(TI)的TMS320C281X系列DSP芯片。"手把手教你学"意味着这份资料提供了详尽的...

    C# SuperSocket 手把手教你入门 傻瓜教程-9(CountSpliterReceiveFilter - 固定数量

    1、C# SuperSocket 手把手教你入门 傻瓜教程---9(CountSpliterReceiveFilter - 固定数量分隔符协议)使用COMMAND 2、客户端发送字符串“#LOGIN#part1#part2#part3#part4#part5#part6#" 3、KEY关键字为LOGIN(创建了...

Global site tag (gtag.js) - Google Analytics