您的位置:首页?>?新闻频道?>?国内新闻?>?深度报道>正文

企业工商网爬虫-2019年我破解“企业工商公示系统网”-爬取企业工商数据-爬虫技术破解哪些事儿

时间:2019-09-06 18:01:08????来源:国际财经网????浏览次数:????我来说两句() 字号:TT

最近在深入研究AI深度爬虫技术,主要是想通过AI技术把我之前写的各种网爬虫代码进行升级,2018年我破解过中文裁判网、专利网、商标网、天x猫、淘x宝、天某查、企某查、启某宝等各种网站各种反爬技,当时为数据分析使用,训练AI模型时候需要用很多数据源,每个网站的数据源都建立一个数据库主要用于做数据分析和训练AI模型使用。

采用的技术是Pythonrequest+selenium+cookie+代理IP+分布式+多线程技术来实现这些网站的数据批量采集,我当时每个网站都专门开发了一套专门针对每个网站的爬虫系统把数据爬取存储到本地,然后把数据清洗到数据库,由于采用分布式多进程,几千万数据的采集速度很快,只要运行爬虫就可以实现原始数据采集、数据更新、数据清洗、数据mysql存储、数据查询excel导出,但是现在AI深度学习技术上来了,之前爬虫技术如果接上AI深度学习技术,那么可以实现自动模拟人行为浏览数据、模拟千军万马的真人行为操控浏览器,自动模拟破解验证码、自动采集任何网站反爬都无法阻挡,关于爬虫技术,自己从事爬虫深度挖掘技术有不少的心得,希望能够给其他的朋友分享一些个人的经验和心得。以下从企业工商公示系统网站的数据采集面临的技术和如何快速的得采集到整个网站的数据而且不受限制和封IP做一些技术分享。(需要爬虫技术和数据挖掘交流的朋友欢迎加我qq2779571288

我们需要的数据字段:企业工商基础信息、年报、专利、股东信息等公示系统里面所有的数据

当我们需要采全国34个省市所有的注册的企业工商数据来做某些行业分析的时候,我当时开发了一套企业工商数据深度爬虫系统,以省为单位,每个省一个数据库,然后按城市分库,全国有34个省市,34个数据库,可以自动爬取所有的企业工商数据。

一、 验证码破解问题:

我们爬一个网站,分析一个网站的技术难度,第一个看技术门槛就是验证码,如果验证码破解不了,那么后面的爬虫工作就无法继续了。解决验证码的方法很简单,我们采用python语言开发的时候,才有python的图像深度识别技术,可以快速轻松解决网站验证密码的问题。

本章我主拿企业工商公示系统(gsxt.gov.cn作为技术学习分享案例,,给大伙分享一下如何分析企业公示网的验证码

目标网站:http://www.gsxt.gov.cn。这个网站数据国家是公开的(下面的技术分享仅仅在公开的数据层面进行讨论),只需在搜索框里面模糊搜索公司名称点击搜索就可以得到你需要搜索的列表,不用输入验证码就可以直接进入hg0088皇冠官网|官网页面。然后你获取列表所有的A链接标签hef的值就可以得到所有公司的hg0088皇冠官网|官网页面的数据。

只要你能给进入hg0088皇冠官网|官网页面,那么几乎数据就可以爬取到了。但是这个网站你搜索的时候回出现验证码,这个是工商系统网站工程师技术的一个反爬技术之一,如果要绕过验证码,有1种办法,就是需要模拟AI人工智能技术去操控拖拉这个验证码,我当时是采用Python的深度学习技术建立了验证码拖拉AI模型,然后训练这个AI模型,训练越多这个模型就越智能,以后只要打开这个网站这个AI模型就可以自动按住鼠标然后根据缺口的位置、高度、距离、速度进模拟人工拖拉这个验证码,刚开始准确率80%左右,随着不断的训练天天都去打开这个网站把出现的各种状态验证码都训练一遍了,最后准确率几乎是100%,像这种网站接入打码平台几乎是不肯能的事情了,只有通过AI训练解决。

二、封掉IP,数据无法爬取的问题:

我在爬工商系统网的时候,对IP封得特别厉害,您休想几万或者几十万的去批量采集他里面的数据,这个问题怎么解决呢,其实很简单,我当时自己建立了代理IP池,每次发送一个http请求的时候采用一个动态的IP,这样就非

常轻松的解决了爬数据的时候的封IP问题,下面这个就是我自己采用分布式多线程方式采用AI验证码+代理IP池结合开发的爬虫系统的数据管理后台

二、数据清洗、数据提炼问题:

在爬数据的时候,会存在重复数据的问题,尤其是像工商系统种网站数据的采集,我去年爬的时候整个网站大概有1.8个亿的数据量,越爬到后面就越大,因为每次爬入库的时候都做了对比是否重复,这样导致速度很慢,最后我重新架构的数据库的结构,把数据库分为2个库,第一个库叫做原始数据库,也就是把爬虫从网站爬下的数据先存储到原始数据库,第二个数据库就是 标准库 我写一个数据清洗提炼的机器人,每天从原始数据库读取数据 进行去重分析 把完整的数据清洗提炼到标准库去,那么用户正式使用链接的数据库就是标准完整的不存在重复的数据库,这样爬虫和用户正式分开,性能非常好。下图是我做的爬虫系统的架构分享给大家。

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

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

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

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

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

我们调用的是 requestsget方法 里面有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去爬,这样速度就快了,程序架构就优化了。

今天时间不多了,先分享到这里,

最近我一直从事大数据挖掘技术研发和AI研发,曾经通过网络神经技术研发了数据挖掘AI模型,采用网络数据挖掘技术开发了天某查企、中文裁判文书网、专利网的数据深度挖掘系统,采用分布式+集群技术实现千万级的数据深度挖掘,最近在深入探究健康医疗、土地交易、酒店、地图等领域数据深度挖掘技术研究,欢迎广大对大数据和AI技术感兴趣的朋友,欢迎加我q2779571288交流!

(特别说明:本文章主要是Python网络请求协议、数据采集技术学习交流和分享讨论,主要是用公开、开放的网站部分数据作为学习案例,交流技术思路,不牵涉到保密和隐私数据)。

转载来源:https://www.fagaoba.com/article/156776119657547900.html

请选择您浏览此新闻时的心情

相关新闻
网友评论
本文共有人参与评论
用户名:
密码:
验证码:??
匿名发表