文档章节

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

游牧民族
 游牧民族
发布于 2016/05/16 17:24
字数 1194
阅读 224
收藏 18
点赞 2
评论 0

系列教程:

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

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

手把手教你写电商爬虫-第三课 实战尚妆网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。

© 著作权归作者所有

共有 人打赏支持
游牧民族
粉丝 7
博文 9
码字总数 14295
作品 0
杭州
互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)

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

游牧民族 ⋅ 2016/05/21 ⋅ 0

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

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

游牧民族 ⋅ 2016/05/16 ⋅ 0

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

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

游牧民族 ⋅ 2016/05/12 ⋅ 0

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

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

游牧民族 ⋅ 2016/05/12 ⋅ 0

手把手教你 Python挖掘用户评论典型意见并自动生产报告

用户体验的工作可以说是用户需求和用户认知的分析。而消费者的声音是其中很重要的一环,它包含了用户对产品的评论,不管是好的坏的,都将对我们产品的改进和迭代有帮助。另外任何事情都要考虑...

sfM06sqVW55DFt1 ⋅ 2017/11/20 ⋅ 0

手把手教你搭建一个基于Java的分布式爬虫系统

在不用爬虫框架的情况下,我经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似 MySQL、HBase 等。 因为此系统基于面向接口的编码思想来开发,所以具有一定的...

技术小能手 ⋅ 06/06 ⋅ 0

一个月入门Python爬虫,快速获取大规模数据

数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣、知乎:爬取优质答案,筛选出各话题下热门内容,探索...

Python开发者 ⋅ 04/25 ⋅ 0

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

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

游牧民族 ⋅ 2016/05/12 ⋅ 0

手把手教你写网络爬虫(2):迷你爬虫架构

原文出处:拓海 介绍 大家好!回顾上一期,我们在介绍了爬虫的基本概念之后,就利用各种工具横冲直撞的完成了一个小爬虫,目的就是猛、糙、快,方便初学者上手,建立信心。对于有一定基础的读...

拓海 ⋅ 04/27 ⋅ 0

如何不编程,采集网站评论信息?(视频教程)

如果你不想学编程,数据采集爬虫也是可以用的。 简介 最近的一次组会,我们请来了一位分享嘉宾——15级研究生庞琳同学,给我们科研团队分享网站评论数据的采集。 还记得去年这个时候,庞琳过...

王树义 ⋅ 04/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 37分钟前 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 57分钟前 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部