专栏首页爬虫技术python3网络爬虫-破解天某查-分布式爬虫系统-源码深度解析
原创

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

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

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

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

相关文章

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

    我们都知道未来互联网最大的趋势就是大数据和AI人工智能。在大数据时代如果谁掌握了数据源谁就掌握了财富。像天某查、企某查、启某宝等这种大数据公司主...

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

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

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

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

    孔雀
  • sqlite3 数据库命令操作

    SQLite 数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而...

    阳光岛主
  • Python爬虫之mongodb的权限管理

    刚安装完毕的mongodb默认不使用权限认证方式启动,与MySQL不同,mongodb在安装的时候并没有设置权限,然而公网运行系统需要设置权限以保证数据安全,所...

    海仔
  • 使用Huginn打造自动化云端信息助手

    半年前我在简书上分享过一篇文章——Huginn 安装教程—建立你自己的 IFTTT,简单地介绍了一下Huginn到底是什么以及它部署到Heroku云平台上的方法...

    huginn 中文网
  • 基于selenium写微博爬虫(待续)

    萌海无涯
  • 从程序员的角度谈创业三年

    关于决定是否创业 2012年4月,正好三年前整,在深圳能源正混的郁郁不得志的时候,大学的好兄弟找到我一起创业,他们有钱、有idea,就是差人,当时的我还是技术菜...

    wangxl
  • [llvm] LLVM 核心类简明示例 : llvm::Value && llvm::Type && llvm::Constant

    llvm核心类位于 include/llvm/IR中,用以表示机器无关且表现力极强的LLVM IR。

    racaljk
  • 腾讯织云Metis智能运维学件平台正式开源

    10月20日,腾讯织云 Metis 智能运维学件平台正式对外开源。Metis 是 AIOps(Algorithmic IT Operations),即智能运维领...

    ytkah

扫码关注云+社区

领取腾讯云代金券