系列教程:

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

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

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

都已经三节课了,大家活动活动手脚,咱们开始一场真正的硬仗, 我们要来爬电商老大,淘宝的数据了。

老规矩,爬之前首先感谢淘宝公布出这么多有价值的数据,才让我们这些爬虫们有东西可以搜集啊,不过淘宝就不用我来安利了

广大剁手党相信睡觉的时候都能把网址打出来吧。

工欲善其事,必先利其器,先上工具:

1、神箭手云爬虫,2、Chrome浏览器 3、Chrome的插件XpathHelper 不知道是干嘛的同学请移步第一课
好了,咱们还是先打开淘宝网:

清新的画面,琳琅满目的商品,隐约感到的是前方是一场恶战:

淘宝这么多的商品,这么多的主题,到底从哪里开始呢?要不就女装了,别问我为什么,咱们先打开一个女装的列表页面:

https://s.taobao.com/list?q=%E5%A5%97%E8%A3%85%E5%A5%B3%E5%A4%8F

我们点击一下下一页看看连接:

https://s.taobao.com/list?q=%E5%A5%97%E8%A3%85%E5%A5%B3%E5%A4%8F&bcoffset=-4&s=60

看着好像不难,很简单,不过值得注意的是,我们把鼠标移到下一页可以看到连接本身并不是这个,这个是js处理的,这种情况类似前面我们遇到的尚妆网下一页,我们一会再说。

我们再看下详情页

https://item.taobao.com/item.htm?spm=a217f.7283053.1997524073.204.hEmtfc&id=527101625954&scm=1029.minilist-17.1.16&ppath=&sku=&ug=#detailhttps://item.taobao.com/item.htm?spm=a217f.7283053.1997524073.209.hEmtfc&id=528697742170&scm=1029.minilist-17.1.16&ppath=&sku=&ug=#detail

看着比较简单,就直接提取成:

https://item\\.taobao\\.com/item\\.htm\\?.*

我比较懒,这个就先这样吧,然后我们来看看详情页我们需要抽取哪些信息,商品名称,价格自然不能少,这次再来一个新鲜的,就是缩略图列表,因为淘宝的商品不只有一个缩略图,因此需要爬取一个缩略图数组。

同样,用chrome开发者工具和xpathhelper对抽取项进行分析,看了一下结果,尝试过滤xhr,结果:

高手就是高手,在大量的请求中,找到响应的请求,相当的困难。不要紧,还记得我们上节课提到的核武器吗-JS渲染引擎,只要我们把JS渲染引擎打开,那么我们完全不用操心大量ajax请求的判断,当然他的问题是效率低一些,不过没关系,反正在云上跑嘛,睡一觉就好了。

在神箭手里调用JS渲染引擎的方式很简单,只需要一行代码设置既可:

configs.enableJS=true

好了,那我们现在可以无视ajax请求了,直接用chrome工具打开,直接提取:

//em[@id="J_PromoPriceNum"]

简单暴啦,然后高兴没有1秒钟,瞬间蒙逼,淘宝上的价格不仅有这种促销价格,还有价格区间,还有的是普通的价格,我的天的,这不是要人命吗~
没办法,再难也要硬着头皮上,目前来看,一共有两种价格的抽取方式,当然不排除有其他多种的情况,我们先对这两种分别写一下抽取规则:

//em[@id="J_PromoPriceNum"]
//em[contains(@class,"tb-rmb-num")]

我们可以通过 | 这个来连接,表达不同页面的选取可以共存

//em[@id="J_PromoPriceNum"] | //em[contains(@class,"tb-rmb-num")]

不容易。我们再看看商品名称,这个相对简单:

//h3[contains(@class,'tb-main-title')]/@data-title

最后,我们需要抽取图片的地址:

//ul[@id="J_UlThumb"]/li//img/@src

由于这一项存在多项,因此需要将该抽取规则的repeated字段设置成true

var configs = {  domains: ["www.taobao.com","item.taobao.com"],  scanUrls: ["https://www.taobao.com/go/market/nvzhuang/citiao/taozhuangqun.php"],  contentUrlRegexes: ["https://item\\.taobao\\.com/item\\.htm\\?.*"],  helperUrlRegexes: ["https://www\\.taobao\\.com/go/market/nvzhuang/citiao/taozhuangqun.php"],//可留空  enableJS:true,  fields: [  {  // 第一个抽取项  name: "title",  selector: "//h3[contains(@class,'tb-main-title')]/@data-title",//默认使用XPath  required: true //是否不能为空  },  {  // 第二个抽取项  name: "price",  selector: "//em[@id='J_PromoPriceNum'] | //em[contains(@class,'tb-rmb-num')]",//默认使用XPath  },  {  // 第三个抽取项  name: "thumbs",  selector: "//ul[@id='J_UlThumb']/li//img/@src",//默认使用XPath  },  ]
};
var crawler = new Crawler(configs);
crawler.start();

好了,虽然淘宝比尚妆网难的多,但是在我们拿出核武器之后,一切迎刃而解,回头我们在来处理下一页的问题,这里虽然和尚妆网不一样,但是整体的原理大同小异,就不一一解释,我们直接上代码:

var configs = {  domains: ["s.taobao.com","item.taobao.com"],  scanUrls: ["https://s.taobao.com/list?q=%E5%A5%97%E8%A3%85%E5%A5%B3%E5%A4%8F"],  contentUrlRegexes: ["https?://item\\.taobao\\.com/item\\.htm\\?.*"],  helperUrlRegexes: ["https?://s\\.taobao\\.com/list\\?q=%E5%A5%97%E8%A3%85%E5%A5%B3%E5%A4%8F.*"],//可留空  enableJS:true,  fields: [  {  // 第一个抽取项  name: "title",  selector: "//h3[contains(@class,'tb-main-title')]/@data-title",//默认使用XPath  required: true //是否不能为空  },  {  // 第二个抽取项  name: "price",  selector: "//em[@id='J_PromoPriceNum'] | //em[contains(@class,'tb-rmb-num')]",//默认使用XPath  required: true //是否不能为空  },  {  // 第三个抽取项  name: "thumbs",  selector: "//ul[@id='J_UlThumb']/li//img/@src",//默认使用XPath  repeated:true  },  ]
};
configs.onProcessHelperUrl = function(url, content, site){  if(!content.indexOf("未找到与")){  var currentStart = parseInt(url.substring(url.indexOf("&s=") + 3));  var start = currentStart + 60;  var nextUrl = url.replace("&s=" + currentStart, "&s=" + start);  site.addUrl(nextUrl);  }  return true;
};
var crawler = new Crawler(configs);
crawler.start();

OK 大功告成,测试结果如下,由于开启的js渲染,所以爬取的速度比较慢,只能耐心等待了。

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

手把手教你写电商爬虫-第四课 淘宝网商品爬虫自动JS渲染相关推荐

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

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

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

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

  3. 【python爬虫】爬取淘宝网商品信息

    相信学了python爬虫,很多人都想爬取一些数据量比较大的网站,淘宝网就是一个很好的目标,其数据量大,而且种类繁多,而且难度不是很大,很适合初级学者进行爬取.下面是整个爬取过程: 第一步:构建访问的u ...

  4. 获取各大电商平台,item_get_app - 获得淘宝app商品详情原数据API返回数据说明

    今天跟大家分享的是item_get_app - 获得淘宝app商品详情原数据API返回数据说明 item_get_app  获得淘宝商品详情 [查看演示] API测试工具 注册链接(获取Key和sec ...

  5. 电商导购网站遭淘宝打压 推广成本高成隐患

    [导读]中国互联网最基本的模式就是流量的低买高卖,然而与百度.淘宝商业模式不同,美丽说.蘑菇街这些社会化电商公司却不得不面临其主要收入必须依赖淘宝分成的问题. 转播到腾讯微博 对于美丽说蘑菇街而言,其 ...

  6. 电商外包众生相:从淘宝吃饭到海外运营

    知名投资公司太平洋投资管理有限公司(以下简称"太平洋投资")与电商代运营商兴长信达一周来的隔空骂战,牵出业界对庞大电商产业链条上电子商务外包业的浓厚兴趣.记者在网络上搜索" ...

  7. python电商数据挖掘_Python 爬取淘宝商品数据挖掘分析实战

    作者 孙方辉 本文为CDA志愿者投稿作品,转载需授权 项目内容 本案例选择>> 商品类目:沙发: 数量:共100页 4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目 ...

  8. Python爬虫模拟浏览器的headers、cookie,爬取淘宝网商品信息

    一. 淘宝商品信息定向爬虫 二. 爬虫基础:正则表达式 三. 淘宝页面查看与分析 四. 爬虫源码 一. 淘宝商品信息定向爬虫 注意淘宝的robots.txt不允许任何爬虫爬取,我们只在技术层面探讨这一 ...

  9. 网络爬虫与信息提取--正则表达式---淘宝商品比价定向爬虫

    淘宝商品比价定向爬虫 本实例爬取时间2019.9.11 由于淘宝代码的不断完善更新,本爬取代码已经不能爬取出商品信息内容 原因:结果为空:打印html看到,需要登录淘宝 在网上找解决方法,可以复制co ...

  10. 跨境电商亚马逊运用淘宝无货源店群模式?三点不可为

    本文由简书作者无货源跨境(YmxKj8)发布,未经允许不得转载 无货源店群模式其实也不是什么新模式,在国内淘宝平台上面这模式已经发展了很长时间了,只是由于淘宝平台门槛太低,涌入的卖家太多,现在的市场已 ...

最新文章

  1. Microbiome: 黄龙病破坏柑橘根部相关微生物菌群从根际到根面的富集过程
  2. 关于STM32 SPI NSS的讨论
  3. 93没有了_杭州1米93程序员征婚贴火了!年薪50万,孩子随妈姓,没有皇位要继承...
  4. 笨办法学 Python · 续 练习 28:`sh`
  5. 菲涅尔单缝衍射matlab,单缝菲涅尔衍射的光强分布.pdf
  6. 分享一个Latex一页纸简历模板(中英文)
  7. 提权学习:第三方软件提权(FlashFXP 替换文件漏洞提权)
  8. Mac 阻止搜狗输入法偷偷更新
  9. 台式计算机拆机步骤ppt,意式咖啡机的拆解评测ppt
  10. [续]基于高斯两步移动搜寻法(2SFCA)的城市绿地可达性分析[格网]
  11. Leetcode-1598. 文件夹操作日志搜集器
  12. 获取HTML中文本框的值并进行比较两者的大小
  13. WIN10下PyCharm+Anaconda+PyTorch-GPU+CUDA9.2+cuDNN7.2环境搭建
  14. ThingsBoard 3.2.1 发布
  15. Advanced Installer修改默认安装路径判断盘符是否存在
  16. ios微信二维码无法长按识别的若干解决方案
  17. js 解决页面切换时,定时器setInterval会变得很慢,有时候不执行的问题
  18. excel中如何拷贝已经筛选出来的数据到另外的一表格中
  19. 虚拟机文件无法正常打开的解决方法
  20. 网络机房搬迁的实施与经验

热门文章

  1. Undefined symbols for architecture i386的错误
  2. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂[转]
  3. 输入两个整数,求他们相除的余数
  4. c++中 . 和 - 的区别
  5. UILabel显示html文本
  6. 想满足一点小小的欲望,怎么就这么难……咦?这儿有戏!
  7. k8s 创建、切换、删除namespace
  8. 微软正式发布 Azure IoT Central
  9. 当BeanUtils遇到泛型
  10. ContextLoaderListener和Spring MVC中的DispatcherServlet加载内容的区别