天眼查有一个高级搜索功能(需要VIP权限,淘宝购买1个7天试用约2元)。

天眼查内的公司大约2.6亿。

高级搜索会限制输出,查询最大输出是10万条。

因此,需要通过限制条件查询的方式,让查询输出小于10万条。

这里采用 区域 + 行业 的条件进行筛选。

获取查询总数

通过浏览器的F12 抓取 勾选条件时,网页触发的数量查询API https://capi.tianyancha.com/cloud-tempest/advance

(天眼查记得打开F12的preserve log,因为它会有基本的反爬技巧,没有打开这个,api很快会被刷掉无法查看)

里面需要注意:headers里必须有一个参数,否则无法查询。(自动解析工具,会漏掉这个的解析)

    headers = {"version": "TYC-Web"}

页面解析

页面解析获取需要的公司信息,详见代码。

里面的核心API为

天眼查-商业查询平台_企业信息查询_公司查询_工商查询_企业信用信息系统

需要查看这个API的cookies,headers和data,并用它来发送请求。

优化爬取

先查询区域,如果总数小于上限10万条,则直接按区域爬取,效率最高。

如果超过,则必须加上行业,依次查询(TODO:有个别例如 朝阳和丰台区的某个行业也是超过10万的,需要进一步加筛选条件)。

爬取的每个page size建议为最大值100(每页100个公司)。

爬取过程中,经常会出现网页无效,需要加入重试机制。

测试发现,20并发的查询比较稳定,30并发的爬取网页错误率已经比较明显(加入重试机制,不比20并发快多少)。

解决天眼查的反爬机制

天眼查通过cookie的时间限制,让你从浏览器复制的cookies信息很快失效,无法持续爬取。

cookies中如下3个反爬参数,会定期更新acw_tc是15分钟,acw_sc__v2是1小时,Hm_lpvt_e92c8d65d92d534b0fc290df538b4758是会话周期(你的后面数字可能和我不一样)。

这里通过selenium加载浏览器驱动,每10分钟刷新一次真实页面,并将更新后的cookies信息,更新到爬取代码中,以便于持续爬取。

另外,发送查询的data中,有一个xyz参数,类似密码。如果软件无法爬取成功,需要在浏览器中查看这个值,并更新到代码中。

断点续传

爬取过程中,中断然后继续爬取是一个必须的功能。

这里采用redis记录,(区域+行业作为key,page作为value),程序下次启动会从redis中找到上次的最后page,然后继续爬取。

部分区域行业的page需要反复尝试,才能爬取,因此,程序需要多次运行,才能将尾巴数据爬取干净。

软件相关

线程池还是进程池?

里面用到的lxml的底层是libxml,因此,即使使用的是线程池(python GIL的原因,只能使用1个cpu),在监控也能看到超过100%的CPU使用率。因此放弃资源消耗更高的进程池。

页面解析

页面解析需要将公司名和公司地址定位在一个节点下,因为会存在有些公司没有地址,导致顺序错乱,无法使用的问题。

定位一个节点

xpath('//div[@class="search-item sv-search-company"]')

解析公司名

.find('.//div[@class="info"]')

解析公司地址(这里必须是findall,因为有2个contact row,有一个text有值的,才是地址信息)

.findall('.//div[@class="contact row"]')

写文件

python的open("xxx.txt", "a+")模式,是一个线程安全的追加内容方式,经过大量并发测试,确认无需加锁,可直接使用。

如何从天眼查获取海量公司信息相关推荐

  1. 天眼查pc端公司信息抓取

    本篇查询的是人工智能前5页相关公司的信息: #主要是异常处理和反爬处理 1.异常处理就是有的公司不是公开的数据没有所以需要判断,不然程序会出错 2.反爬页面浏览多了会需要登录,这边用cookie处理 ...

  2. python分支机构_基于Python爬取天眼查网站的企业信息!Python无所不能!

    注:这是一个在未登录的情况下,根据企业名称搜索,爬取企业页面数据的采集程序,是一个比较简单的爬虫,基本上只用到了代理,没有用到其他的反反爬技术,不过由于爬取的数据比较多, 适合刷解析技能的熟练度 . ...

  3. 软件主管离职后非法获取海量客户信息牟利

    (给技术最前线加星标,每天看技术热点) 转自:上海市松江检察院 日前,上海市松江区人民检察院审查批捕了一起离职程序员利用漏洞非法获取老东家计算机信息系统数据的案件. 犯罪嫌疑人李飞是一名程序员,201 ...

  4. 【python爬虫实战】python3.7+selenium3.7 登录天眼查网站查询企业的公开信息

    [xpath使用详解] http://www.cnblogs.com/VseYoung/p/8686383.html 通过xpath 父子节点.兄弟节点反查目标节点的方式来定位标签,使得python代 ...

  5. java对接天眼查接口,天眼查提供案例方法过期最新案例

    java对接天眼查接口 1.先了解天眼查是用来做什么的 2.确定账号 3.登录账号,找到数据接口,找到token,调用示例 1.先了解天眼查是用来做什么的 天眼查,是中国领先的商业查询平台 ,已收录全 ...

  6. 想找一家好公司入职或者合作?那么这块天眼查GUI版本非常适合你。

    前言 天眼查是咱们都知道的一个网站了,就是可以通过这个网站来知道咱们想了解公司的一些情况,比如是不是濒临破产,有没有什么法律纠纷.所以今天在找合作公司的时候,就突发奇想的想着写一个天眼查的gui脚本, ...

  7. C端企业信息查询网站对比分析:企查查vs天眼查vs启信宝

    近年来随着商业环境向好,伴随着国家暖企稳企利好政策的实施,新增企业数量逐年增加,中小微企业的增速尤其明显.但新增企业相关信息查找难度大,越来越多的个人用户和企业对于获取和查询企业信息的需求日益增长,因 ...

  8. 推荐 查公司信息的一个网站

    查看公司信息的一个网站: http://www.tianyancha.com/  天眼查

  9. 根据ip反查公司信息和域名方法(python实现)

    根据 IP 反查公司和域名的方法通常包括以下几个步骤: 获取 IP 地址:可以通过访问某个网站或使用网络工具如 "ping" 命令."tracert" 命令等来 ...

最新文章

  1. C++ string类中的find()函数的简单使用
  2. “面试不败计划”:集合总结
  3. 小米android11新特性,小米已推送安卓11测试版 目前支持三款机型
  4. 信息化之路------广州行
  5. java设置文件为文件夹_如何为文件夹及其所有子文件夹和文件设置chmod? [关闭]...
  6. 有了async/await,你可以丢掉promise链了
  7. CodeRush For .Net 使用-------使用标签
  8. vbs无限循环代码_vbs整人代码
  9. 2013年最新十大xp系统下载排行榜-无极系统下载站
  10. java考勤表导出_考勤打卡机导出的excel考勤时间表如何生成实用的考勤表
  11. WorldFirst澳元收款账户上线,人民币提现当天到账!
  12. hdu 5745 La Vie en rose 2016多校第二场1012
  13. d610网络计算机,尼康D610,10年来我见过的真心值得买的全幅单反
  14. java 开发微型公众账号应用
  15. 字符集问题的初步探讨
  16. linux查询系统硬件配置
  17. 为什么每个女生都比较避讳别人问年龄问题?于是我偷偷写了一款年龄检测器,公司同事的年龄都被我知道了~
  18. 计算机图形学(三)——opengl实现动态钻石图的绘制
  19. 引用 《大明宫词》经典台词89句
  20. ajax请求-IE缓存处理

热门文章

  1. LeetCode 855. 考场就座
  2. 使用Scrapy框架爬取艺龙网机票信息
  3. 正值找工作的好时光,来看看这份精心准备的面试总结吧
  4. 《人月神话》打动我的那些章节----论几十年前的软件工程开发理念在当代还有多少理论行得通(一)
  5. Python之list
  6. iOS 电量条的隐藏显示
  7. html中无结束标志有哪些,所有的标记都必须要有一个相应的结束标记
  8. 记在银联电子支付的上线感想
  9. Altium Designer 导出元器件库到Candence中使用,SCHLIB 转OLB
  10. 这可能是最通俗的 React Fiber 打开方式