文档章节

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

游牧民族
 游牧民族
发布于 2016/05/16 17:24
字数 1194
阅读 270
收藏 20

系列教程:

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

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

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

© 著作权归作者所有

共有 人打赏支持
游牧民族
粉丝 9
博文 9
码字总数 14295
作品 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
手把手教你 Python挖掘用户评论典型意见并自动生产报告

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

sfM06sqVW55DFt1
2017/11/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt那些事0.0.15

以下与Q_DECLARE_METATYPE相关内容全部是翻译自Qt文档。参看QVariant Class | Qt Core 5.9以及QMetaType Class | Qt Core 5.9 QVariant QVariant::fromValue(const T& value) 返回一份包含v......

Ev4n
1分钟前
0
0
spring上传文件返回绝对路径,简单工具类

import com.google.common.io.Files;import lombok.extern.slf4j.Slf4j;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOExceptio......

Boss-x
13分钟前
1
0
1个开发如何撑起一个过亿用户的小程序

本文由云+社区发表 2018年12月,腾讯相册累计用户量突破1亿,月活1200万,阿拉丁指数排行 Top 30,已经成为小程序生态的重量级玩家。 三个多月来,腾讯相册围绕【在微信分享相册照片】这一核...

腾讯云加社区
19分钟前
3
0
golang ssh包使用方法介绍

在使用gexpect包发现很多问题之外,这里又尝试使用ssh user@127.0.0.1的思路进行用户切换。这里记录下具体的使用方法,遇到的ssh: must specify HostKeyCallback 问题的解法方法及最终使用过...

linuxprobe16
24分钟前
0
0
layer

Layui Layer在open弹出层中异步加载数据和form表单radio、checkbox、select不渲染,不可点击的解决办法 layer 实现弹窗提交信息 function confirmUpdateAward(i) { layer.open({ ...

mickelfeng
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部