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

2019-10-12 18:05:20 浏览数 (1)

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个核心数据维度:

首先整个网站有主要核心数据有以下48大模块: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))

0 人点赞