文档章节

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

游牧民族
 游牧民族
发布于 2016/05/12 16:42
字数 1442
阅读 305
收藏 8

工具要求:教程中主要使用到了 1、神箭手云爬虫框架  这个是爬虫的基础,2、Chrome浏览器和Chrome的插件XpathHelper 这个用来测试Xpath写的是否正确

基础知识:本教程中主要用到了一些基础的js和xpath语法,如果对这两种语言不熟悉,可以提前先学习下,都很简单

 

教程正式开始,现在电商网站很多,牛逼哄哄的淘宝京东,新晋贵族唯品会聚美优品 海淘的美丽说higo网易惠惠等等,作为新手,上来打boss的结果必定是灰屏回家,所以 我们现在新手村附近找个小弟练练级吧。

找小弟也要有找小弟的办法,我们就去it橘子上看看有没有什么新的电商公司试试,找了一圈,就相中了这个切糕王子,名字霸气,内容简单,非常适合我们这种新手练手,掌握一下基本技能。

那我们就正式开始,首先,我们打开切糕王子的商品列表页

http://www.qiegaowz.com/product/Default.html

只有5款商品,果然是互联网思维,爆品逻辑。顿时让我们有种用大炮大蚊子的赶脚,写个爬虫的时间,不如手动复制了。不过,谁让我们是程序员呢?手动复制这么low的事情说出去都丢不起这个人。

开始前先给大家普及一下爬虫的基本步骤

1.选定入口url,也叫种子url,就是让爬虫从哪个页面开始爬

2.区分哪些是内容页面,也就是我们需要抽取数据的页面,哪些是中间页,就是连接其他页面,没有我们需要的数据的页面

3.对内容页写抽取规则

4.开始爬虫

 

好了,那我们就开始了

第一步来:这个网站的入口url很简单,就一个页面

http://www.qiegaowz.com/product/Default.html 就是他了,也没别人

 

第二步:内容页面就是那5个商品的页面

http://www.qiegaowz.com/product/5ee97997-1700-4d19-b93a-6bd7c930fefe.html

http://www.qiegaowz.com/product/ccdf1d03-58da-48a9-bfd2-d9c403b56c98.html

http://www.qiegaowz.com/product/1f44feec-751a-4656-9e42-ec1cb7d8dee6.html

http://www.qiegaowz.com/product/83106246-d38e-42da-a0a4-2289f699b066.html

http://www.qiegaowz.com/product/a723b3cc-91f0-495f-b7b8-792b4470a6e6.html

神箭手框架里是将内容页用正则表达式来限制的,那没这几个页面统一一个正则的话就是

http://www\\.qiegaowz\\.com/product/[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}\\.html

添加了两个\是因为这句话将被写到字符串中,所以需要对\再进行一次转义,不理解的话也没关系,记得这么做就可以了

什么?有人觉得这个太难了,那我们可以再简单一点

http://www\\.qiegaowz\\.com/product/.{36}\\.html

特别提醒,在正则表达式中,"."和"?"这个字符是需要转义的,这些千万不能写错了。

中间页的话,就是http://www.qiegaowz.com/product/Default.html,转换成正则的格式

http://www\\.qiegaowz\\.com/product/Default\\.html

 

第三步:我们打开其中一个商品的页面

发现整个页面没啥内容,我们就勉强来分成三个部分吧,分别是 缩略图,商品名称,内容

先看缩略图:我们用chrome打开,并打开开发者工具:

根据html的层级结构,主要找class和ID的节点,我们可以看到我们这个图片的自己的标签是img标签,没有什么特别的属性,那没看他的父标签,

是<div class="showpic"> 我们来查一下发现这个showpic再整个页面里面出现了1次,那么用这个showpic的class就可以直接定位到这个图片,xpath的写法就是:

//div[contains(@class ,'showpic')]/img/@src

简单解释下xpath,开始的两个//代表着从根目录开始不确定过了多少级,如果是单/则代表是一级层级关系,class属性的选择我们通常使用 contains是为了防止一个标签有多个class,最后因为我们要获取的是图片的地址,所以最终我们要选取到src属性,好了 我们写完之后 用xpathhelper检测一下对不对

没问题,另外两个抽取项在这里就不详细解释了,方式大同小异,直接放结果:

//div[contains(@class ,'showpic')]/img/@src

//div[contains(@class ,'showproduct')]/h1

//div[contains(@class,'shownewdes')]

 

OK,那么到这里,我们爬虫的准备工作已经做完了,根据神箭手框架的文档,我们将我们的准备好的代码组装一下如下,

    var configs = {  
        domains: ["www.qiegaowz.com"],  
        scanUrls: ["http://www.qiegaowz.com/product/Default.html"],  
        contentUrlRegexes: ["http://www\\.qiegaowz\\.com/product/.{36}\\.html"],  
        helpUrlRegexes:["http://www\\.qiegaowz\\.com/product/Default\\.html"],  
        fields: [  
            {  
                // 商品缩略图  
                name: "thumbnail",  
                selector: "//div[contains(@class,'showpic')]/img/@src",  
            },  
            {  
                // 商品标题  
                name: "title",  
                selector: "//div[contains(@class,'showproduct')]/h1",  
            },  
            {  
                // 商品内容  
                name: "content",  
                selector: "//div[contains(@class,'shownewdes')]",  
            }  
        ]  
    };  
      
    start(configs);  

 

到这里就大功告成了,我们将代码复制神箭手后台代码中,保存并测试下,顺利爬到数据。

不过还有一些遗留问题,如商品内容中有一些我们不需要的内容,如何去掉,这个我们可以在后面的教程中详细解释。

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

© 著作权归作者所有

共有 人打赏支持
游牧民族
粉丝 9
博文 9
码字总数 14295
作品 0
杭州
私信 提问
手把手教你写电商爬虫-第五课 京东商品评论爬虫 一起来对付反爬虫

系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取 手把手教...

游牧民族
2016/05/16
204
0
互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)

相关教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取 手把手教...

游牧民族
2016/05/21
255
0
手把手教你写电商爬虫-第四课 淘宝网商品爬虫自动JS渲染

系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取 老规矩,...

游牧民族
2016/05/16
140
0
手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫

系列教程 手把手教你写电商爬虫-第一课 找个软柿子捏捏 如果没有看过第一课的朋友,请先移步第一课,第一课讲了一些基础性的东西,通过软柿子"切糕王子"这个电商网站好好的练了一次手,相信大...

游牧民族
2016/05/12
166
0
手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取

系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 看完两篇,相信大家已经从开始的小菜鸟晋升为中级菜鸟了,好了,那我们就...

游牧民族
2016/05/12
176
0

没有更多内容

加载失败,请刷新页面

加载更多

java8之stream流的基本操作

一、stream流简介 Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。 Stream的优点:声明性,可复合,可并行。这三个特性使得stream操作更简洁,更灵活,更高效。 Stre...

嘴角轻扬30
25分钟前
1
0
Docker 可视化管理工具 Panama

Panamax 是一个开源的项目,可以通过简单的拖拉操作就可以实现发布复杂的 Docker 容器应用。Panamax 为 Docker, Fleet & CoreOS 提供友好的管理界面。 容器技术是下一代的虚拟机,但使用该技...

linuxprobe16
26分钟前
2
0
scala中hdfs文件的操作

对于org.apache.hadoop.fs.Path来说, path.getName只是文件名,不包括路径 path.getParent也只是父文件的文件名,同样不包括路径 path.toString才是文件的全路径名 创建文件 hdfs.createNew...

hblt-j
41分钟前
2
0
Eureka 和 zookeeper 的比较

小小小施爷
50分钟前
0
0
c++ 开源算法库 (持续更新)

最近在做算法方面的研究,发现很难找到一个全面而优质的科学计算算法库。不过还是找到一些,在此记录一下,将来也许自己写一个把所有这些整合在一起。本列表会持续不定期更新。 GSL http://w...

propagator
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部