您好!欢迎来到长沙分类目录! 提交网站流程->注册会员->提交网站->等待审核...
长沙分类目录
数据统计:156个主题分类,6080个优秀站点,1245个站点正在排队审核,386篇站长资讯
【通知】 服务于广大营销人员(SEOer)的增免费加外链【目录帮超级外链工具】上线测试了,欢迎使用。

一看就明白的爬虫入门讲解:基础理论篇(下篇)

来源:www.mulubang.com 浏览:430次 时间:2015-11-30

在《一看就明白的爬虫入门讲解:基础理论篇(上篇)》分享了爬虫入门中的"我们的目的是什么"、"内容从何而来"、"了解网络请求"这三部分的内容,这一篇我继续分享以下内容:

一些常见的限制方式尝试解决问题的思路效率问题的取舍

一、一些常见的限制方式

上述都是讲的都是一些的基础的知识,现在我就列一些比较常见的限制方式,如何突破这些限制这些抓取数据:

Basic Auth

一般会有用户授权的限制,会在headers的Autheration字段里要求加入;

Referer

通常是在访问链接时,必须要带上Referer字段,服务器会进行验证,例如抓取京东的评论;

User-Agent

会要求真是的设备,如果不加会用编程语言包里自有User-Agent,可以被辨别出来;

Cookie

一般在用户登录或者某些操作后,服务端会在返回包中包含Cookie信息要求浏览器设置Cookie,没有Cookie会很容易被辨别出来是伪造请求;

也有本地通过JS,根据服务端返回的某个信息进行处理生成的加密信息,设置在Cookie里面;

Gzip

请求headers里面带了gzip,返回有时候会是gzip压缩,需要解压;

Java加密操作

一般都是在请求的数据包内容里面会包含一些被java进行加密限制的信息,例如新浪微博会进行SHA1和RSA加密,之前是两次SHA1加密,然后发送的密码和用户名都会被加密;

其他字段

因为http的headers可以自定义地段,所以第三方可能会加入了一些自定义的字段名称或者字段值,这也是需要注意的。

真实的请求过程中,其实不止上面某一种限制,可能是几种限制组合在一次,比如如果是类似RSA加密的话,可能先请求服务器得到Cookie,然后再带着Cookie去请求服务器拿到公钥,然后再用js进行加密,再发送数据到服务器。所以弄清楚这其中的原理,并且耐心分析很重要。

二、尝试解决问题的思路

首先大的地方,加入我们想抓取某个数据源,我们要知道大概有哪些路径可以获取到数据源,基本上无外乎三种:

PC端网站;

针对移动设备响应式设计的网站(也就是很多人说的H5, 虽然不一定是H5);

移动App;

原则是能抓移动App的,最好抓移动App,如果有针对移动设备优化的网站,就抓针对移动设备优化的网站,最后考虑PC网站。

因为移动App基本都是API很简单,而移动设备访问优化的网站一般来讲都是结构简单清晰的HTML,而PC网站自然是最复杂的了;

针对PC端网站和移动网站的做法一样,分析思路可以一起讲,移动App单独分析。

1.网站类型的分析首先是网站类的,使用的工具就是Chrome,建议用Chrome的隐身模式,分析时不用频繁清楚cookie,直接关闭窗口就可以了。

具体操作步骤如下:

输入网址后,先不要回车确认,右键选择审查元素,然后点击网络,记得要勾上preserve log选项,因为如果出现上面提到过的重定向跳转,之前的请求全部都会被清掉,影响分析,尤其是重定向时还加上了Cookie;

接下来观察网络请求列表,资源文件,例如css,图片基本都可以忽略,第一个请求肯定就是该链接的内容本身,所以查看源码,确认页面上需要抓取的内容是不是 在HTML标签里面,很简单的方法,找到自己要找的内容,看到父节点,然后再看源代码里面该父节点里面有没有内容,如果没有,那么一定是异步请求,如果是 非异步请求,直接抓该链接就可以了。

分析异步请求,按照网络列表,略过资源文件,然后点击各个请求,观察是否在返回时包含想要的内容,有几个方法:

内容比较有特点,例如人的属性信息,物品的价格,或者微博列表等内容,直接观察可以判断是不是该异步请求;

知道异步加载的内容节点或者父节点的class或者id的名称,找到js代码,阅读代码得到异步请求;

确认异步请求之后,就是要分析异步请求了,简单的,直接请求异步请求,能得到数据,但是有时候异步请求会有限制,所以现在分析限制从何而来。

针对分析对请求的限制,思路是逆序方法:

先 找到最后一个得到内容的请求,然后观察headers,先看post数据或者url的某个参数是不是都是已知数据,或者有意义数据,如果发现不确定的先带 上,只是更改某个关键字段,例如page,count看结果是不是会正常,如果不正常,比如多了个token,或者某个字段明显被加密,例如用户名密码, 那么接下来就要看JS的代码,看到底是哪个函数进行了加密,一般会是原生js代码加密,那么看到代码,直接加密就行,如果是类似RSA加密,那么就要看公 钥是从何而来,如果是请求得到的,那么就要往上分析请求,另外如果是发现请求headers里面有陌生字段,或者有Cookie也要往上看请 求,Cookie在哪一步设置的;

接下来找到刚刚那个请求未知来源的信息,例如Cookie或者某个加密需要的公钥等等,看看上面某个请求是不是已经包含,依次类推。

2.App的分析

然后是App类的,使用的工具是Charles,手机和电脑在一个局域网内,先用Charles配置好端口,然后手机设置代理,ip为电脑的ip,端口为设置的端口,然后如果手机上请求网络内容时,Charles会显示相应地请求,那么就ok了,分析的大体逻辑基本一致,限制会相对少很多,但是也有几种情况需要注意:

加密,App有时候也有一些加密的字段,这个时候,一般来讲都会进行反编译进行分析,找到对应的代码片段,逆推出加密方法;

gzip压缩或者编码,编码的辨别度较高,有时候数据被gzip压缩了,不过Charles都是有自动解密的;

https证书,有的https请求会验证证书,Charles提供了证书,可以在官网找到,手机访问,然后信任添加就可以。

三、效率问题的取舍

一般来讲在抓取大量数据,例如全网抓取京东的评论,微博所有人的信息,微博信息,关注关系等等,这种上十亿到百亿次设置千亿次的请求必须考虑效率,否者一天只有86400秒,那么一秒钟要抓100次,一天也才864w次请求,也需要100多天才能到达十亿级别的请求量。

涉及到大规模的抓取,一定要有良好的爬虫设计,一般很多开源的爬虫框架也都是有限制的,因为中间涉及到很多其他的问题,例如数据结构,重复抓取过滤的问题, 当然最重要的是要把带宽利用满,所以分布式抓取很重要,接下来我会有一篇专门讲分布式的爬虫设计,分布式最重要的就是中间消息通信,如果想要抓的越多越 快,那么对中间的消息系统的吞吐量要求也越高。

但是对于一些不太大规模的抓取就没要用分布式的一套,比较消耗时间,基本只要保证单机器的带宽能够利用满就没问题,所以做好并发就可以,另外对于数据结构也 要有一定的控制,很多人写程序,内存越写越大,抓取越来越慢,可能存在的原因就包括,一个是用了内存存一些数据没有进行释放,第二个可能有一些hashset的判断,最后判断的效率越来越低,比如用bloomfilter替换就会优化很多。

推荐站点

  • 淘铺王淘铺王

    淘铺王是国内领先的网店转让平台,提供天猫店铺转让,淘宝店铺转让,天猫代入驻,网店转让等业务。为广大卖家提供全网在售海量天猫店铺转让资源,以专注于淘宝,天猫过户出售入驻转让交易于一体的综合服务。

    www.taopuwang.com
  • 在线问卷调查在线问卷调查

    云调查是免费在线问卷调查系统,通过丰富的调查问卷模板和强大的问卷设计逻辑,让您方便地创建调查问卷,从而轻松地开展在线问卷调查业务收集数据样本。

    www.epanel.cn
  • 安全家安全家

    安全家(www.hsehome.org),是一个专注安全产业的公用平台;安全人的安全知识社区,安全知识交流分享平台;安全家联合安全从业人士和行业单位,共同传播安全文化,分享安全专业知识,交流安全工作、实践经验,提供安全咨询、安全培训服务,让安全理念从危险行业走近生活,推动安全行为全社会化的进程。

    www.hsehome.com
  • 深圳VI设计公司深圳VI设计公司

    【深圳元术文化创意】是国内新锐高端品牌策略与专业的设计机构,专注于VI设计,包装设计,视觉设计,新零售及商业空间设计;打造个性化,定制的线上和线下的高端品牌设计。

    www.yuanshucy.com
  • 广州团建广州团建

    Outing团建是高端的企业团建活动服务商,提供(深圳/广州/惠州等公司)的会议年会策划、别墅轰趴、公司旅游、商务招待、高端团建等服务,让年会/团建更有特色创意!

    www.tbouting.com
  • 草坪种子批发草坪种子批发

    汇川种子批发厂家,专业批发草坪种子,花卉种子,牧草种子,免费提供种植技术指导【一站式采购服务】全部批发价格,价格低廉,品质优良。欢迎新老客户前来选购联系电话(微信同号)【18251072199】

    www.syyuanyi.com