版权声明:本文为博主原创文章,未经博主允许不得转载。

系列教程:

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

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

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

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

四节课过去了,咱们在爬虫界也都算见过世面的人,现在再来一些什么ajax加载之类的小鱼小虾应该不在话下了,即使是淘宝这种大量的ajax,我们 祭上我们的核武器,也轻松应对了,这一课主要是来看看除了技术上的页面处理外,我们还会遇上更棘手的问题,就是反爬虫,当然现在有各种各样的反爬虫,今天 就先介绍最简单的一种:限制IP。

今天咱们的对手依然是业界大佬,马云最忌惮的男人,宅男心中爱恨交错的对象 - JD.COM

也不用我安利,特别是程序员,有几个没给京东送过钱的。废话不多说,先上工具:

1、神箭手云爬虫,

2、Chrome浏览器

3、Chrome的插件XpathHelper 不知道是干嘛的同学请移步第一课

打开网站瞅一眼:

好了,相信我,截这张图绝对不是在虐你们这些单身狗。我们就是科学的研究一下这个页面,没啥特别的:大厂风,硬仗准备。

先来挑一个分类吧,这次挑一个大家都熟悉的互联网书类:

http://search.jd.com/Search?keyword=Python&enc=utf-8&book=y&wq=Python&pvid=33xo9lni.p4a1qb

你们的最爱,python从入门到放弃的全部资料。

和前面几节课类似的分析这节课就不做了,对于分页,ajax请求什么的,大家可以直接参考前面的四节课,这一刻主要特别的是,我们在采集商品的同时,会将京东的商品评价采集下来。同时呢,我们也探讨下该如何应对京东对IP的限制,OK,先直接上代码:

var configs = {  domains: ["search.jd.com","item.jd.com","club.jd.com"],  scanUrls: ["http://search.jd.com/Search?keyword=Python&enc=utf-8&qrst=1&rt=1&stop=1&book=y&vt=2&page=1&s=1&click=0"],  contentUrlRegexes: ["http://item\\.jd\\.com/\\d+.html"],  helperUrlRegexes: ["http://search\\.jd\\.com/Search\\?keyword=Python&enc=utf-8&qrst=1&rt=1&stop=1&book=y&vt=2&page=\\d+&s=1&click=0"],//可留空
    fields: [  {  // 第一个抽取项  name: "title",  selector: "//div[@id='name']/h1",//默认使用XPath  required: true //是否不能为空
        },  {  // 第一个抽取项  name: "productid",  selector: "//div[contains(@class,'fl')]/span[2]",//默认使用XPath  required: true //是否不能为空
        },  {  name: "comments",  sourceType: SourceType.AttachedUrl,  attachedUrl: "http://club.jd.com/productpage/p-{productid}-s-0-t-3-p-0.html",  selectorType: SelectorType.JsonPath,  selector: "$.comments",  repeated: true,  children:[  {  name: "com_content",  selectorType: SelectorType.JsonPath,  selector: "$.content"  },  {  name: "com_nickname",  selectorType: SelectorType.JsonPath,  selector: "$.nickname"  },  ]  }  ]
};
configs.onProcessHelperUrl = function(url, content, site){  if(!content.indexOf("抱歉,没有找到")){  var currentPage = parseInt(url.substring(url.indexOf("&page=") + 6));  if(currentPage == 0){  currentPage = 1;  }  var page = currentPage + 2;  var nextUrl = url.replace("&page=" + currentPage, "&page=" + page);  site.addUrl(nextUrl);  }  return true;
};
var crawler = new Crawler(configs);
crawler.start();  

这里主要给大家讲一下这个评论的配置,由于评论是多项,且评论还有子项,在框架中,是通过children关键字来配置的。具体参照代码既可,我们 可以在子项中在定义不同的字段,像这里的comments抽取项会有content和nickname两个子抽取项,分别对应的是评论的内容和昵称。

这里是一个简化的版本,由于京东页面相对很复杂,我们在抽取评论的时候,只抽取前一部分评论,当然我们还可以拿到更多的信息,包括评论数,评论人的等级等等,这里大家就自行探索吧。

最后,由于京东会对IP进行封锁,虽然说神箭手会自动分布式开启爬虫,不过依然扛不住京东大叔的封锁,因此这里需要通过接入代理IP解决这样的问题,类似开启js渲染,爬取速度会大大下降,需要大家耐心等待结果喽,代码如下:

configs.enableProxy = true;  

大功告成,开启爬虫,喝杯咖啡,京东商品的评论就可以看到啦:

评论因为是数字,因此会存储的时候,会直接存储成json格式:

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

转载于:https://www.cnblogs.com/youmumzyx/p/5499038.html

手把手教你写电商爬虫-第五课 京东商品评论爬虫 一起来对付反爬虫相关推荐

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

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

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

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

  3. 良匠-手把手教你写NFT抢购软(五)

    良匠-手把手教你写NFT抢购软(五) 前言 本篇文章接上上一篇,如何用易语言去请求刚刚分析的接口. 操作 打开上次做的模板,和精易编程助手,先导入精易模块,再复制代码进去. 点击精易编程助手上面的生成 ...

  4. node.js -- 手把手教你搭建 电商平台

    一.项目开始前,开发环境:jquery,node.js,webpack打包.我们养成先在github上新建项目,再拉代码:git常见命令: 1,git clone <>        克隆 ...

  5. 记录一下手把手教您做电商网站

    http://www.imooc.com/learn/100 转载于:https://www.cnblogs.com/TF12138/p/4091373.html

  6. 手把手教你读财报----银行业---第五课

    客户存款约占银行80%的负债,下面介绍银行负债的其他科目: 同业及其他金融机构存放: 银行吸收的境内外金融机构的存款,(不包括保险公司存款,保险公司的存款算客户存款),同业存放期限不得超过一年. 存款 ...

  7. 利用Python爬虫技术爬取京东商品评论

    这是我第一次接触python时,我们学校做的项目实训,其实整个项目实训过程很简单,并没有什么难度,认真学学就会. 首先,我们要明确我们的目标:从京东上爬取产品的评论.一般评论都是进行情感分析,但我还没 ...

  8. 实战案例,手把手教你构建电商用户画像 | 附代码

    导读:本文以真实案例,手把手教你搭建电商系统的用户画像. 先来看该电商用户画像用到的标签. 数据内容包括user_id(用户身份).item_id(商品).IDbehavior_type(用户行为类型 ...

  9. [原创]手把手教你写网络爬虫(2):迷你爬虫架构

    手把手教你写网络爬虫(2) 作者:拓海 (https://github.com/tuohai666) 摘要:从零开始写爬虫,初学者的速成指南! 封面: 介绍 大家好!回顾上一期,我们在介绍了爬虫的基本 ...

  10. python网络爬虫网易云音乐_手把手教你写网络爬虫(1):网易云音乐歌单

    大家好,<手把手教你写网络爬虫>连载开始了!在笔者的职业生涯中,几乎没有发现像网络爬虫这样的编程实践,可以同时吸引程序员和门外汉的注意.本文由浅入深的把爬虫技术和盘托出,为初学者提供一种轻 ...

最新文章

  1. c#如何实现在两个窗体(Form)间传输数据或变量
  2. c++ 结构体构造函数使用总结 附一道经典模拟题
  3. 单引号内的双引号内的双引号怎么写
  4. Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)
  5. OpenStack(二)——Keystone组件
  6. virtualbox虚拟机安装Ubuntu异常处理:FATAL: NO bootable medium found! System halted
  7. 写作之法 —— 如何切题与点题
  8. 用iTunes管理iPhone
  9. Java中NLP的学习
  10. android javap命令生成自定义类签名
  11. R语言经纬度度分秒转小数点
  12. android谷歌服务框架(GoogleServicesFramework)
  13. 使用ISO镜像制作适用于OpenStack的云镜像
  14. FrameMaker 格式的本地化流程
  15. mybatis中的事务------我的笔记M11
  16. 无线充qi2来了,快来了解下~
  17. 习题6-5巡逻机器人 UVa 1600 bfs
  18. 行为识别:让机器学会“察言观色”第一步
  19. easy-mock 官网,最新网址!
  20. macbook air扩展显示器全屏滑动怎样不一起滑动?

热门文章

  1. 滴滴『技术高层』再生变,高级副总裁章文嵩将离职,他曾为阿里云CTO,投身开源20年...
  2. 基本表改变视图不改变为什么_为什么说10万本金以下穷人玩股票一般都会赔?不改变穷人思维,还不如退出股市...
  3. 《龙腾世纪2》图文流程攻略
  4. 模板库(七) - 字符串算法
  5. 在浏览器输入localhost:3000显示需要新应用打开此localhost原因
  6. Python 爬取“微博树洞”详细教程
  7. SPSS MODELER
  8. 改进left函数,截取varchar需要的字符串长度
  9. java练习案例_Java版打字练习案例源码
  10. 毕业设计 - 题目:基于FP-Growth的新闻挖掘算法系统的设计与实现