python爬虫经验之谈

其实90%的人都在听说大数据,但是90%的人都不知道什么是大数据,大数据干嘛用的,我相信这个问题大家都有吧,那么到底什么是大数据呢? 大数据都在哪儿呢?其实目前最有价值的东西就是数据,目前很多数据是分散在网络上的,只要您通过数据挖掘技术把分散有价值的数据挖掘出来然后整理分析就是一个大数据项目,下面分享我通过python爬虫技术做企业大数据挖掘的一些经历给大家。

因为一直从事php+python+AI大数据深度挖掘的技术研发,当前互联网已经从it时代发展到data时代,人工智能+大数据是当前互联网技术领域的两大趋势,记得在2010-2016年从事过电商的技术研发,当时电商时代造就了很多创业人,很多有想法的大学生或者有梦的青年都抓住电商时代赚了财富,当时只要您有一个好的电商平台模式去创业,都会得到投资人的感兴趣和投资,在电商时代第一批进入电商的人都成为企业家或者成为创业精英,尤其是那几年里从事PHP开发技术工程师特别吃得香,因为很多企业都开始转型做电商平台,需要大量的电商开发技术人才,我那时候主要是从事PHP开发,解决过一天上千万级访问量的电商网站技术问题,那时候的PHP开发工作特别枪手,然而从2016年左右电商时代就开始走下坡了,主要是做的人越来越多,竞争越来越大,最终形成了像淘宝 京东这种巨头占领了市场,后面的人几乎很少有机会了,所以在一个行业崛起的时候往往是第一批进去的人才有机会,这个就需要有独特的战略投资眼光和勇气!

一、从技术角度给大家分享什么是大数据和人工智能?

自从2018年开始大数据和人工智能就火起来了,可以说2019年是大数据的发起年,因为我一直从事Python+AI+网络爬虫技术的深度研发,很多朋友都找我帮忙通过我的爬虫技术解决数据源的问题,我们知道不管是做人工智能还是做大数据前提就是需要有数据,第一个技术问题就算解决数据源的问题,也就是需要用到大数据挖掘技术,人工智能是通过喂养大量的数据后分析计算得到的一种智能结果,把1亿的图片头像提交给机器人,让它把是人的图片和是狗的图片识别,这个大数据模型分析技术,前提是我们需要解决1亿的头像图片数据源问题,然后建立人脸识别和动物脸型识别模型,然后把1亿数据喂养给机器人去训练,知道准确到达到100%,那么这个训练记忆逻辑和算法就会保存在机器人的代码里,下次再随便给它一张头像就很快识别是人还是狗或者是猫了。很多人在问我什么是大数据,大数据是干嘛的,其实这个就是大数据和人工智能。如果把这个大数据和人工智能研发出来的人脸识别技术进行提升产品化做成一个小区安防智能保安通过人物画像捕捉技术然后再通过人脸识别技术就知道每天进入小区的是人还是动物,如果是禁止动物进入就自动报警。一样的我们再改造这个技术投放到交通公安领域去应用,如果再那么多的红绿灯路口中经过智能人脸识别技术发现这个犯罪分子的头像了就形成自动报警。一个小小的技术可以在很多场景使用。这就是人工智能和大数据的魅力和未来的发展潜力无限,大家是否可以想象 以后会出现一个岗位就是“数据饲养员”,这个岗位主要是负责给不同机器人灌输不同的数据,训练模型,我们技术开发出来的模型,就需要有数据饲养员天天喂养数据训练它,就像阿尔法围棋(AlphaGo)是第一个击败人类职业围棋选手的机器人一下,开发出来后需要有人喂养围棋各种下法的数据,或者说需要有人天天和它下围棋,每一轮它会把你旗子的移动步骤记录下来,下的越多经验就越丰富。当记录的数据量超过几千万人下棋的数据后,它几乎就把人类可能要走的步骤你记得清清,谁都不会是它对手了。

二、企业工商大数据挖掘技术分享(全国8000万企业工商数据46个纬度的挖掘技术)

因为一直研究深度爬虫前沿技术,最近有几个创业的朋友找我帮忙建立企业大数据库和政策库大数据,因为我前段时间刚刚帮朋友完成了“天谋查和企谋查”企业库数据的分布式爬虫系统的研发,解决了封IP技术和字体库加密技术问题,同时解决了亿万级的大数据分库分区存储的问题,企业信息的数据维度从30个增加到了46个维度。 每一个企业的数据纬度都有它的价值,我们在做数据挖掘的时候首先要先分析我们需要挖掘的数据包含哪些及纬度,他们的数据结构关系等,企业工商数据我当时挖掘的数据纬度包含:
基础信息包含的字:
企业基础信息字段包含:1公司名称、2法定代表人、3注册资本、4成立日期、5经营状态、6所属省份、 7所属市区、 8所属区县、 9公司类型、10统一社会信用代码
11企业公示的联系电话、 12企业公示联系手机 、13企业公示注册的地址 、14企业公示的网址、15企业公示的邮箱、16经营范围
企业全部46个数据纬度:
1、基本信息数据 2、主要成员数据 3、股东信息数据 4对外投资数据 5最终受益人
6、实际控权人 7、变更记录数据 8、公司年报数据 9、分支机构数据 10、开庭公告数据
11、法律诉讼数据 12、行政处罚【工商局】 13、股权出质 14、融资历史 16、企业业务
17、投资事件数据 18、竞品信息数据 19、行政许可【工商局】 20、行政许可【信用中国】
21、税务评级数据 22、抽查检查 23、资质证书数据 24、进出口信用数据 25、电信许可
26、商标信息 27、专利信息 28、软件著作权 29、作品著作权 30、网站备案数据
31、历史工商信息 32、历史股东信息 33、历史对外投资 34、历史开庭公告
35、历史法律诉讼数据 36、历史被执行人信息 37、历史行政处罚【工商局】
38、历史股权出质 39、法院公告 40、行政处罚【信用中国】 41、动产抵押 42、招投标
43、微信公众号 44、历史法院公告 45、历史行政许可【工商局】
46、历史行政许可【信用中国】

利用爬虫技术,实现那么多企业数据的网络数据挖掘,需要足够多的服务器和大数据搜索引擎架构,首先我对企业进行了按城市维度进行分库,全国每个城市都建立一个自己的数据库,然后自己利用Python爬虫技术+企业词库+代理IP池+分布式多进程的技术架构开发了一套“企业大数据深度挖掘系统”,利用分布式爬虫系统,在采集数据企业的时候,面临不少问题的。
经过这几年从事的数据挖掘技术工作,我们知道做人工智能需要大数据为基础,现在很多企业都做大数据的挖掘工作,导致我们的很多工程师同事不断的需要学习数据挖掘技术,需要做大数据就需要解决的是数据源,,我们目前比较流行的数据挖掘技术的开发语言就是python,因为python拥有非常完整的各种库可以直接使用,比如: 图像识别库、requests库等等,下面就关于 模拟请求爬取天某查的整套架构设计+核心代码分享给大家,主要是解决大家在写python爬虫过程中遇到验证码问题、封IP问题、分页爬不完问题、还有爬取的效率和速度问题。
三、分享的解决方案
四、我们做天某查或者企某查这种企业工商大数据网站的数据爬取的数据,首先应该评估一下数据量有多大,天某查应该是千万级上亿级的数据,我们需要做一个大数据架构来支撑这个亿级的数量存储和爬取工作,免得到时数据大了都动不了了反而就是这个灾难。整个数据架构分为原始库+标准库+数据清洗+代理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的数据不限制,随机改变。

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值