专栏首页爬虫技术分享如何利用爬虫技术完全实现类似天眼查、企查查、八爪鱼、火车头网络爬虫工具?
原创

分享如何利用爬虫技术完全实现类似天眼查、企查查、八爪鱼、火车头网络爬虫工具?

分享如何利用爬虫技术完全实现类似天眼查、企查查、八爪鱼、火车头网络爬虫工具?

我们都知道未来互联网最大的趋势就是大数据和AI人工智能。在大数据时代如果谁掌握了数据源谁就掌握了财富。像天某查、企某查、启某宝等这种大数据公司主要就是通过爬虫技术把政府公开的工商数据聚合集中起来,然后做成一个大数据库,提供给用户使用,来实现大数据商业化目的。

一、python的网络爬虫技术为大数据而生!

如果您要做大数据公司或者想从事大数据项目创业的,我们第一步就是您要有能力解决数据源问题,然而现在很多想从事大数据创业的群体合作需要大数据的公司大部分都是花钱去买数据,但是这个成本太大,因为现在市面上的企业工商数据这些大平台公司而标价是0.1元/条,全国8000多万企业数据,如果您想做企业大数据领域分析和应用那么就需要800多万元数据成本,这个明显肯定是不能这样做的,其实有一个非常好的方式。可以快速实现获取数据源。那就是利用Python强大的网络爬虫技术。Python是为大数据和AI人工智能而生的。下面我将给大家介绍如何使用Python网络爬虫技术实现我们大数据挖掘事业,在此之前我先总结一下目前各种想做大数据的经常犯的一个错误和误区。

二、数据采集使用工具误区,工具无法破解各种反爬技术。

很多人想采集工商数据、或者是专利网数据、或者是商标网数据,很多人都会去百度搜索下载各种工具,比如说火车头工具、八爪鱼工具还有各种各样的工具。但是这种工具一般都是失望透顶的。因为这些工具只是一个广泛的发送请求简单工具而已,需要你写代码呢。而且无法实现专业破解反爬技术各种措施。

举例:比如我们现在需要做企业大数据,我们去爬取企业工商系统,比如您用火车头工,具需要自己写很多正则表达式代码,无法破解验证码、封IP的,因为破解验证码需用AI技术、封IP需要用代理IP池。工具里面不可能给你代理IP池。就算你正则表达式写对了 也爬不到数据。

三、目前网上数据采集工具、爬虫软件共同存在的问题:

软件名称

特点

是否可以破解验证码

是否可以破解封IP

是否可以破解需要登陆

火车头

需要自己写代码

不支持

不支持

不支持

八爪鱼

不支持定制采集

不支持

不支持

不支持

其实我们做数据挖掘和大数据我们真正需要的那种可以完全自动数据,不用我再写代码然后自己搞数据库 然后自己开发代码。更多希望是我指定这个目标数据源比如天某查,您这个工具可以把这个天某数据源全部采集下来并且结构化存储到数据库去。而且有一个数据后台管理系统给我直接使用最好,所为我当时为了解决这个智能深度爬虫,我自己写代码架构和研发了一个大数据深度挖掘系统,主要是解决可以一键爬取天某查全库的企业工商数据、商x标网数据、专x利网数据、土地交易网数据、全国中标招标网数据,采用分布式多进程、集群的技术实现数据批量挖掘和存储。

四、分享如何做精准深度AI大数据挖掘系统

举例:我们天某查或者企某查这种企业工商大数据网站的数据爬取的数据,首先应该评估一下数据量有多大,天某查应该是千万级上亿级的数据,我们需要做一个大数据架构来支撑这个亿级的数量存储和爬取工作,免得到时数据大了都动不了了反而就是这个灾难。整个数据架构分为原始库+标准库+数据清洗+代理IP池等。

原始库:数据库我们实现读写分离的简易架构,python爬虫不断的把数据采集下来并且写入到原始数据库,写入的时候不用做去重的判断,因为如果您在写入的时候就判断是否存在再去入库,那么当一个表里面有几千万的数据你逐个去匹配去重时候 速度是非常慢的,几十分钟你才能成功插入一条新的数据,所以这个时候我们就应该把判断去重的工作交付给异步清洗处理,尽可能让采集新数据的工作压力越小越好,这样采集的速度就很快,爬虫就负责一直采集入库即可。

标准库:我们中间会有一个数据清洗过程,数据清洗其实很简单,就是把原始库的数据异步复制到标准库中,只是在复制插入到标准库的过程中先判断标准库是否已经存在该条数据了,如果存在就更新之前没有的字段,如果不存在就直接插入库一条。

数据清洗:我们一程序实现数据库复制和判断去重的,把原始库的数据复制一份到标准库后,立刻把原始库的意见清洗过的数据删除掉,为什么需要删除掉原始库已经清洗过的数据呢?因为如果不擅长,那么原始库越来越大,以后每次清洗数据量越来越大而且都是重复清洗,导致清洗工作重复和压力大。

代理IP池:也许您会问这个代理IP池是做什么,又是怎么实现的呢?我们在爬网站的时候,需要用代理ip不能用我们自己电脑的IP去爬,原因是在你电脑直接运行代码那么爬虫的IP就是你电脑的IP ,如果一直频繁的去采集对方的网站,那么对方会检测到您的IP直接把您的IP列入黑名单导致你以后在也采集不了了。所以我所有的批量采集爬虫都采用代理IP去爬的,python怎么采用代理IP呢?其实很简单就那么一行代码就解决:

 resp = requests.get(url, headers=self.headers, timeout=20, proxies=proxy)

我们调用的是 requests的get方法 里面有url、和headers以及 , proxies代理IP设置的参数。

url:就是我们采集的目标网站地址

headers:就是我们模拟访问对方网站时候需要模拟的头参数(这个参数怎么来呢,其实很简单,直接用火狐打开对方网站 查看网络里面有和请求头 那些参数复制过来即可)

 Proxies:就是我们的设置我们的代理IP,代理IP是什么意思呢?代理服务器的工作机制很象我们生活中常常提及的代理商,假设你的机器为A机,你想获得的数据由B机提供,代理服务器为C机,那么具体的连接过程是这样的。 首先,A它与C机建立连接把请求发给C,C机接收到A机的数据请求后马上与B机建立连接,下载A机所请求的B机上的数据到本地,再将此数据发送至A机,完成代理任务。这样下载对方网站的数据的是代理服务器,而这个代理服务器IP是随机变动,对方就抓不到是谁一直采集他的数据了。那这个代理ip我们清楚了,这个ip代理池又是什么呢?我们运行我们的python程序的时候,每秒发一个http请求去爬对方网站一次,请求一次需要一个IP,那么这个ip怎么来呢?我们可以网上购买第三方那种ip接口,比如:每10秒中会返回1个IP给我们用,如果我们每次爬数据都先要调取代理IP接口得到IP了再去爬对方网站 那么这个效率和代码质量就低了,因为人家是10秒中才一个IP,您的程序速度和效率就直接卡在因为代理IP接口控制问题了,所以这个时候您需要改进代理IP代码架构,首先每10秒中读取代理IP接口得到的IP 缓存到reis去,并且设置60秒过期,那么这个redis就会形成一个代理IP池了,您的程序代码爬对方网站时候直接从redis读取IP去爬,这样速度就快了,程序架构就优化了。

采集速度太频繁了,会被封IP问题 怎么解决

当我们发出去的http请求到天谋查网站的时候,正常情况下返回200状态,说明请求合法被接受,而且会看到返回的数据,但是天谋查有自己的一套反爬机制算法,如果检查到同一个IP来不断的采集他网站的数据,那么他会被这个IP列入异常黑名单,您再去采集它网站数据的时候,那么就永远被拦截了。怎么解决这个问题呢,其实很简单,没有错用代理IP去访问,每一次请求的时候都采用代理IP方式去请求,而且这个代理IP是随机变动的,每次请求都不同,所以用这个代理IP技术解决了被封的问题。

自己搭建代理池ip

做爬虫技术都知道,代理IP的质量决定了爬虫的效率,要想爬快一点,必须选择质量好,高匿名、不重复、时间长的IP,在选择代理IP的时候,市场价格好的搭理IP一般是6000/月,所以当时为了避免这个费用成本,就自己搭建了自己IP代理池,利用技术优势节省了一大截成本。

爬天某查是怎么知道我们使用代理IP的呢?

想知道代理IP的问题,我先要理解清楚 代理IP里的“透明”“匿名”“高匿”分别是指什么:

透明代理IP::就是我们用这个代理IP去采集天某查的时候,不会隐藏我们自己的IP,我们的IP一种是暴漏透明的,那么天某查会很快识别到同一个客户端IP重复访问采集它的网站数据,就会把这个IP拉入黑名单做个标记,下次你在去采集的时候直接被封了。

普通匿名代理IP:能隐藏我们客户机的真实IP,但是有一个坏处就是但会改变我们的请求信息,天某查有可能会认为我们使用了代理。不过使用此种代理时,虽然被访问的网站不能知道你的ip地址,但仍然可以知道你在使用代理,当然某些能够侦测ip的网页仍然可以查到你的ip,所以这种IP是不适合去采集天某查的数据的。

高匿名代理IP: 这种IP是不会改变客户机的请求,这样在服务器看来就像有个真正的客户用浏览器在访问它,这时客户的真实IP是隐藏的,服务器端(天某查)不会认为我们使用了代理,我们在采集天某查的应该选用这种高匿名的IP,那么哪里去找这种代理IP呢,下面的小结将会给大家介绍。

想要解决绕过天某查验证码爬数据的问题,首先我们要分析是在什么情况下才会出现验证码,天某查是通过以下两种方式进行识别我们是否浏览器访问还是爬虫访问:

怎么知道天某查封了我们的IP呢?

您去爬天某查的时候,如果您的IP被封或者不正常,天某查就会返回登录页面,出现登录界面就说明您的ip被封了,或者被监控到异常了。所以我们在爬数据的时候,用正则匹配一下是否有注册登录的界面html标签字符,如果出现登录界面马上重新换一个IP重新请求,就一直执行循环直到换到正常的可用的IP为止即可。

为什么采用代理IP后还是被封了?

我们做爬虫的时候不能使用自己电脑的IP去循环采集天某查网站否则会直接封IP,或者出现验证码,要解决这个问题其实很简单就是采用动态的代理IP,但是呢很多人用代理IP还是出现会封,其实原因是您用的这个代理IP质量不行,或者你用的是那种、免费的代理IP。使用代理IP还是被封会有以下原因:

(1) 您的代理IP失效时间太短,还没成完一个http请求就失效了,导致永远被封或者无效

(2) 您的代理IP网络不到达不通导致

(3) 你的代理IP不是高匿名的,直接被识别出来

(4) 您的代理IP已经被其他人用过爬天某查了,早被列入黑名单,导致你永远IP被封。

(5) 你是不是老是一直用几个代理IP循环去爬?正确做法是每个请求都随机换不同IP,所以您需要网上选那种不限制数量的代理IP,而不是固定几个IP。

4、爬天某查应该选用什么样的代理IP?

建议您的代理IP应该满足以下要求:

(1) 、高匿名,普通匿名不行,一定是高匿名

(2) 、有效期时间长,至少2分钟之内是有效的

(3) 、不重复,至少在30天内不重复的IP

、不限量,每天IP的数据不限制,随机改变。

时间有限,先分享到这里,我得写代码去..........

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2019年python爬虫-我破解了中文裁判网数据挖掘-反爬技术哪些事情

    从事了5年多的PHP研发和python大数据挖掘,其实在2010-2015年是电商时代,那个时候很多企业开发做电商平台,我负责研发最多也是电商项...

    孔雀
  • 分享-python爬虫遇到封IP+验证码+登陆限制,如何解决?

    现在国家在鼓励做大数据、全面进行数字化中国建设,很多企业包括很多有前瞻性的创业人都开始进军大数据,各种根据自己的擅长领域开始储备数据源,我们需要做大数据第一步就...

    孔雀
  • 很多人不知道什么是大数据,分享2019年我用Python爬虫技术做企业大数据的那些事儿

    什么是大数据和人工智能,分享2019年我用Python爬虫技术做企业大数据的那些事儿

    孔雀
  • LoadRunner12工具介绍(连载6)

    有一些软件为了防止DDoS攻击,不允许在短的时间内使用单个IP在比较,重复执行多个操作,如61左边所示。如果可以模拟多个IP操作后,这些操作就被允许了,如61右...

    小老鼠
  • 2019年python爬虫-我破解了中文裁判网数据挖掘-反爬技术哪些事情

    从事了5年多的PHP研发和python大数据挖掘,其实在2010-2015年是电商时代,那个时候很多企业开发做电商平台,我负责研发最多也是电商项...

    孔雀
  • C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)

    前言 C# 用IP地址(123.125.114.144)查询位置(北京市百度公司)的东西,非常好用也非常方便,可手动升级刷新IP库,一次编码永久收益,可支持wi...

    Java中文社群_老王
  • IP黑名单质量如何提升?看看BLAG

    近几年,威胁情报在网络安全领域展现出其独有价值,结合大数据技术、人工智能技术,威胁情报可为企业提供决策支撑信息,降低企业整体风险,具有光明的应用前景,可威胁情报...

    绿盟科技研究通讯
  • tcpdump分析IP协议

    十毛
  • 很多人不知道什么是大数据,分享2019年我用Python爬虫技术做企业大数据的那些事儿

    什么是大数据和人工智能,分享2019年我用Python爬虫技术做企业大数据的那些事儿

    孔雀
  • 脑残式网络编程入门(六):什么是公网IP和内网IP?NAT转换又是什么鬼?1、引言2、系列文章3、每台电脑都必须要一个公网IP吗?4、公司的内网是如何实现内网IP地址分配和管理的?5、NAT技术:实现

    搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么?又有什么关系呢?另外,内行都知道,提到...

    JackJiang

扫码关注云+社区

领取腾讯云代金券