从事了5年多的PHP研发和python大数据挖掘,其实在2010-2015年是电商时代,那个时候很多企业开发做电商平台,我负责研发最多也是电商项目,电商平台主要面临的是千万级的并发量、海量图片的存储、还有双十一或者节假日的秒杀活动高并发,这个也是最挑战技术的地方。做过日IP上千万的电商平台技术架构,接触过几百万并发的挑战,做过图片服务器分布式存储、分布式集群、搜索引擎、网络分布式节点架构。但是直到2015年开始 电商就慢慢走下坡了,互联网时代其实已经由电商时代升级到大数据时代。之前是我们说是it互联网,那么现在就是data互联网。大数据 人工智能是目前互联网最大的趋势。谁掌握了数据谁就掌握了财富。
最近自己在用python mongdb mysql 多进程 cookie池 代理池 写了一套分布式多进程的某某裁判网数据爬虫系统,主要是用来帮助一个朋友做案件的判例数据分析使用,实现了对中x裁判网整个网站的全部数据各种维度的采集和存储,并且根据中x裁判网页的数据结构建立数据库表来存储数据,最后对这些数据分析文本分析、模糊算法分析接触非常有价值的风险控制模型解决方案,很多做技术的朋友爬取某某裁判网的时候会遇到不少,比如封IP爬不了,比如验证码破解了等等问题,我把我的经历和解决方案分享给大家。
(需要爬虫技术交流的朋友欢迎加我qq:2779571288),首先我们先分析它的反爬机制:
一、裁判网如何判断我们是否浏览器访问还是爬虫访问:
想要解决绕过裁判网爬数据的问题,首先我们要分析是在什么情况下才会出现验证码,裁判网是通过以下两种方式进行识别我们是否浏览器访问还是爬虫访问:
方法1:通过识别我们的请求头,来识别是否真实用户,我们打开裁判网站的时候,正常浏览器打开会有一个请求头,请求头会按顺序带上相应的参数去请求裁判网的网站,裁判网的技术工程师会头这个头进行参数验证,如果发现您发送过来的请求头参数缺少或者顺序不同或者不对,那么就可以识别出来您是爬虫来采集他的数据,不是正常的真实用户用浏览器访问的,那么就会提示302,301等各种禁止访问的提示。每个网页的请求头参数我们都可用chrome查看元素去查看浏览器打开这个网页的时候具体包含了那些请求头参数,下面是刑事案件列表请求头:访问网址:
http://wenshu.court.gov.cn/List/List?sorttype=1&conditions=searchWord 1 AJLX 案件类型:刑事案件
请求头参数:
通过分析这个请求头我们就知道里面有一个cookie是加密的,还有请求的参数,我们如果要模拟采集这页面的数据我们就得模拟这个请求头。然后用python的 request.get(url)方法去请求获取数据。
方法2:通过监控同一个IP段的访问频率,如果用我们的电脑运行爬虫程序去裁判网,那么我们的外网IP就一个,你一分钟之内如果访问的速度超过十几次,那么中文裁判网明显知道您是用爬虫程序来访问他的网站的,他就会让你稍等再来,或者禁止访问。那么我们怎么知道裁判网的请求头是什么呢?我们模拟发送一个get请求的时候,应该带哪些头参数呢?
方法3:cookie加密,如果一个网站做了cookie加密算法来拦截爬虫,一般的手段是你必须先打开首页,然后才能再打开列表页或者详细页,如果发现你都没有打开过首页你就直接访问详细页了,那么根据页面访问的记录cookie加密算法可以直接识别出来您是非法访问,你是爬虫,直接把您拦截了或者拉入黑名单了。
二、采集中文裁判时需要带header头哪些参数?
您用火狐或者chrome打开裁判网的刑事案件栏目的首页,然后用浏览器的查看元素-网络-看到请求头如下
我们在写代码的时候就必须带上这些参数,而且值是一模一样,顺序也不要颠倒,那么我们的请求头问题解决了,下面我们只要再解决封IP问题就可以正常采集裁判网数据。
三、为什么采用代理IP后还是被封了?
我们做爬虫的时候不能使用自己电脑的IP去循环采集裁判网站否则会直接封IP,要解决这个问题其实很简单就是采用动态的代理IP,但是呢很多人用代理IP还是出现会封,其实原因是您用的这个代理IP质量不行,或者你用的是那种网上公开的或者免费的代理IP。使用代理IP还是被封会有以下原因:
(1) 您的代理IP失效时间太短,还没成完一个http请求就失效了,导致永远被封或者无效。
(2) 您的代理IP网络不到达不通导致,原因是您的代理IP网络不行。
(3) 你的代理IP不是高匿名的,直接被识别出来,需要购买高匿名、高私密的的代理IP
(4) 您的代理IP已经被其他人用过裁判网了,早被列入黑名单,导致你永远IP被封。
(5) 你是不是老是一直用几个代理IP循环去爬?正确做法是每个请求都随机换不同IP,所以您需要网上选那种不限制数量的代理IP,而不是固定几个IP。
四、、爬裁判网应该选用什么样的代理IP?
建议您的代理IP应该满足以下要求:
(1) 、高匿名,普通匿名不行,一定是高匿名,具体哪里可有购买这种,可去百度网上搜索,反正价格不菲。
(2) 、有效期时间长,至少2分钟之内是有效的,如果2分钟就过去了,网页还没有加载完,数据还还没有解析完IP就失效了,导致数据永远爬不下来。
(3) 、不重复,至少在30天内不重复的IP,因为动态IP是采用vps自动拨号原理来生成的,存在重复的可能,所以您需要过滤掉一些已经用过的IP.
(4) 、不限量,每天IP的数据不限制,随机改变。
五、海量的裁判文书如何解析和存储?
裁判网有几个亿的裁判文书,我们爬下来的是html原始数据,下一步是需要对html原始数据清洗解析加工结构化存储,我们解析网页最好的工具肯定是python的BeautifulSoup,可以方便的解析案件内容,可以把被告、原告、时间、类型、内容、关键词、标题等解析出来然后结构化存储到数据库供后面的应用开发做检索和分析使用。裁判网数据量太大可以用mongdb,mongdb是一款做大数据结构化和非结构化存储的数据库,适合做爬虫的数据存储数据库,裁判网的数据量比较大,如果您全部吧数据存储到一个表去,那么前台系统的搜索几乎是动不了,所以我们需要按时间分库存储,比如2018年的数据做一个库,2019年的数据又做一个库,这样建立索引关系就解决数据量大查询速度问题。
六、代理IP池的搭建:
我们需要搭建自己高质量的代理IP池,这样才能保证源源不断的产出IP然后去请求目标网站,当时我用了几百台vps搭建了我自己的代理IP池,解决了封IP的问题。
七、裁判网数据有什么用?什么是大数据啊?、
最近很多朋友都问我,天天都看到人们说大数据,但是大数据是做什么的,大数据都在哪里,怎么用的呢? 我相信很多没有进入大数据领域的朋友都是面临同样这样的问题,其实未来最有价值的除了石油就是数据,谁掌握了数据谁掌握了财富,比如您掌握了上海的企业工商数据,那么你就掌握了上海企业数据的财富,您掌握了裁判网的数据,你就掌握了企业司法风险分析的财富,您就掌握了律师数据服务的财富,最有价值的不是直接卖数据而是用数据做成解决方案、运营方案、决策方案。举个简单例子,比如您用数据挖掘与数据分析技术做成一个“大数据判例分析”的应用投入服务给律师行业使用,我相信很多律师都需要您这个服务,因为如果他有1万家企业需要分析时候,他人工就成本是非常大的,所以数据的价值不在于买卖数据,而在于数据分析和数据应用。