python3网络爬虫-破解天眼查-分布式爬虫系统-源码深度解析

Python爬虫-2018年-我破解天眼查和启信宝企业数据爬虫--破解反爬技术那些事情

最近在自己用python3+mongdb写了一套分布式多线程的天眼查爬虫系统,实现了对天眼查整个网站的全部数据各种维度的采集和存储,主要是为了深入学习爬虫技术使用,并且根据天眼查网页的数据结构建立了30个表来存储30个维度的数据,很多做技术的朋友在爬天眼查的时候会遇到以下几个问题,我把我的经历和解决方案分享给大家。(需要爬虫技术交流的朋友欢迎加我qq:2779571288)

#大数据爬虫系统-主要包含这些维度

def get_all_info(soup, cid, company):

passmethod(get_base(soup, cid, company)) # 1、工商信息数据

passmethod(get_partner(soup, cid, company)) # 2、主要成员数据

passmethod(get_gudong(soup, cid, company)) # 3、股东信息数据

passmethod(get_invest(soup, cid, company)) # 4、对外投资数据

#passmethod(get_uplog(soup, cid, company)) # 5、变更记录数据

passmethod(get_report(soup, cid, company)) # 6、公司年报数据

passmethod(get_branch(soup, cid, company)) # 7、分支机构数据

passmethod(get_rongzi(soup, cid, company)) # 8、融资历史数据

passmethod(get_team(soup, cid, company)) # 9、核心团队数据

passmethod(get_touzhi(soup, cid, company)) # 10、投资事件数据

passmethod(get_jingpin(soup, cid, company)) # 12、竞品信息数据

passmethod(get_court_notice(soup, cid, company)) # 13、开庭公告数据

passmethod(get_laws(soup, cid, company)) # 14、法律诉讼数据

passmethod(get_court_report(soup, cid, company)) # 15、法院公告数据

passmethod(get_punish(soup, cid, company)) # 16、行政处罚数据

passmethod(get_zhaobiao(soup, cid, company)) # 17、招标数据

passmethod(get_zhaopin(soup, cid, company)) # 18、招聘数据数据

passmethod(get_swlevel(soup, cid, company)) # 19、税务评级数据

passmethod(get_credit(soup, cid, company)) # 20、进出口信用数据

passmethod(get_certificate(soup, cid, company)) # 21、资质证书数据

passmethod(get_weixin(soup, cid, company)) # 22、微信公众号信息

passmethod(get_pright(soup, cid, company)) # 23、知识产权数据

passmethod(get_soft(soup, cid, company)) # 24、软件著作权数据

passmethod(get_pright2(soup, cid, company)) # 25、作品著作权数据

passmethod(get_site(soup, cid, company)) # 26、网站备案数据

passmethod(get_product(soup, cid, company)) # 27、产品信息数据

passmethod(get_zhuanli(soup, cid, company)) # 28、专利数据数据

print ('success!')

1、天眼查和启信宝哪一个的数据更难爬呢?

其实在准备爬天眼查数据的时候,我对启信宝、企查查类似的网站分布从数据的完整性和数据的更新及时性分析了,结果个人觉得天眼查的数据比其他网站的要完整,数据维度要多一些,数据更新的时候也比较快,所以最后选择了爬取天眼查里面的企业数据。

2、天眼查的30个核心数据维度:

首先整个网站有主要核心数据有以下19大模块:1基本信息、2法人代表、3主要成员、4股东&出资、5变更记录、6公司年报、7司法风险、8舆情事件、9岗位招聘、10商品信息、11网站备案、12商标数据、13专利数据,、14 作品著作权软件著作权、16对外投资关系、17税务评级、18行政处罚、19进出口信用、20企业评级信用等十九个维度的企业数据,如果把这些数据爬下来,并且结构化,实现可以查询可以检索使用,可以导出到excel,可以生成企业报告,那么需要建立数据库来存储这些数据,像这种非结构化的数据我们选择mongdb数据库是最合适的。

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

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

4  天眼查2个亿的数据量怎么存储?需要多少的代理IP

我在写爬虫去爬天眼查的时候,刚开始使用网上的免费或者收费的代理IP,结果90%都被封号,所以建议大家以后采集这种大数据量网站的时候 不要使用网上免费的或者那种收费的IP,因为这种ip几秒钟就会过期,意思就是你没有采集网或者刚刚访问到数据的时候,这个IP就过期了导致你无法采集成功,所以最后我自己搭建了自己的代理池解决了2个亿天眼查数据的采集封IP问题。

5 天眼查网站数据几个亿数据的存储

数据库设计很重要,几个亿的数据存储 数据库设计很重要

我当时花了10天时间吧天眼查爬虫系统全部开发完毕,可以每天爬去百万条数据,30个维度的数据,数据爬下来后主要是数据的存储和管理,数据库的我采用了mongdb,爬虫开发技术我采用了python,几个亿的数据后台管理系统我采用php,我自己架构了分布式架构系统,所以我采集的我采用分布式+多线程+集群的方式,采集速度相当的快!

python3 模拟请求目标网站:

我自己封装了一个方法,把请求头参数拼接后,然后调用requests的get方法直接模拟请求到目标网站,然后根据页面返回的关键词来识别是请求失败或者成功或者是被封了

def get_html(url, mheaders={}, cookies={}):

while True:

try:

proxy = get_proxy() # 获取代理

if not mheaders:

resp = requests.get(url, headers=headers, cookies=cookies, proxies=proxy, timeout=3)

else:

resp = requests.get(url, headers=mheaders, cookies=cookies, proxies=proxy, timeout=3)

if 'tianyancha' in url:

if resp.status_code == requests.codes.ok:

if '请输入验证码' not in resp.text:

return resp.text

else:

print('{}被封了!'.format(proxy))

elif '融资历史' in resp.text:

return resp.text

else:

print('错误的代码编号:{}, url:{}'.format(resp.status_code, url))

else:

if resp.status_code == requests.codes.ok:

if '小查为' in resp.text or '基本信息' in resp.text:

return resp.text

else:

print('错误的代码编号:{}, url:{}'.format(resp.status_code, url))

except Exception as e:

print('url :{},错误:{}'.format(url, e))

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

快讯 | 十年前,Chrome浏览器诞生了

十年中,Chrome见证了Web浏览器的沧海桑田。直到今天,Chrome仍然是世界上最受欢迎的浏览器,也是谷歌的大杀器之一。

9420
来自专栏编程坑太多

更我学习springmvc+dubbo分布式平台-平台功能导图

19050
来自专栏杨建荣的学习笔记

swingbench压测Oracle小记(r12笔记第20天)

今天抽时间在整理一个关于MySQL和Oracle共同面临的问题,但是它们有着不同的解决方案,就是经典的partial write问题,我也看到网上有很多D...

38570
来自专栏FreeBuf

选个“靶子”练练手:15个漏洞测试网站带你飞

俗话说进攻是最好的防御,而这与信息安全世界并没有什么不同。通过这15个故意存漏洞网站来提升你的黑客技能,你会成为最好的防守者——无论你是一名开发人员、安全管理者...

39170
来自专栏数据科学与人工智能

【数据】常用API接口汇总

下面列举了100多个国内常用API接口,并按照 笔记、出行、词典、电商、地图、电影、即时通讯、开发者网站、快递查询、旅游、社交、视频、天气、团队协作、图片与图像...

6.9K100
来自专栏北京马哥教育

Linux 与 Unix 到底有什么不同?

如果你是一名20多岁或30多岁的软件开发人员,那么你已成长在一个由Linux主导的世界中。数十年来,它一直是数据中心的重要参与者,尽管很难找到明确的操作系统市场...

20600
来自专栏沈唁志

浅谈2018年后端技术趋势

62030
来自专栏直播系统源码

三大操作系统,直播APP源码的操作系统选择要怎样

Windows、 macOS和linux是现如今市面上比较流行的三大操作系统,一般来说我更推荐大家在直播APP源码的搭建上选择用linux系统搭建,为什么呢?一...

24920
来自专栏瓜大三哥

MIG例化技巧

Unbuffered DIMM,定位于桌面市场,指地址和控制信号没有经过缓冲器,没有做任何时序调整(缓冲器延迟是有的),直接到达DIMM上的RAM芯片。而Reg...

12050
来自专栏芋道源码1024

端游、手游服务端常用的架构是什么样的?

因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器:

39920

扫码关注云+社区

领取腾讯云代金券