爱企查与天眼查也来啦~

news/2024/12/23 1:13:58/

续企查查之后,爱企查作为不用登录也能查的网站,还自带json返回,方便了数据的获取,深受我的喜爱。

天眼查只能手机号登录,没有企查查QQ登录的方便,勉强把它拉过来吧,他既没有json返回,网页上也没有任何字典数据,只能从表格中获取。第一次使用天眼查爬取的时候发现了反爬字体 tyc-num ,查阅了各种资料才知道需要用 TTFont来输出其数字对应关系(不错,以后自己也能用用),所需 tyc-num.woff 的资源可以在天眼查网站上找到下载,也可以去资源中找到,多的就不说了,直接上代码:

# _*_ coding:utf-8 _*_
# FileName: get_company.py
# IDE: PyCharm
# 菜菜代码,永无BUG!import json
import requests
from urllib import parse
from bs4 import BeautifulSoup
from fontTools.ttLib import TTFont
from get_cookies import get_cookies_from_chrome# https://aiqicha.baidu.com/
# https://www.tianyancha.com/"""
from faker import Faker
fake = Faker()
headers = {'User-Agent': fake.user_agent()}
"""headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"}aqc_search_url = "https://aiqicha.baidu.com/s?t=0&"
aqc_detail_url = "https://aiqicha.baidu.com/company_detail_"
aqc_data_url = "https://aiqicha.baidu.com/detail/basicAllDataAjax?pid="
tyc_search_url = "https://www.tianyancha.com/search?"tyc_cookie = get_cookies_from_chrome('tianyancha.com')# 破解干扰爬虫的字体
if not __import__('os').path.isfile('tyc-num.xml'):font = TTFont('tyc-num.woff')font.saveXML('tyc-num.xml')
ids = BeautifulSoup(open('tyc-num.xml', 'r', encoding='utf-8').read(), 'xml').find('GlyphOrder').find_all('GlyphID')
gid = {}
for g in range(10):  # 主要破解数字0-9gid[ids[g + 2]["name"]] = ids[g]["id"]def aqc_get_company(company_name):  # 爱企查不用登录账号即可流畅查询s = requests.session()s.headers.update(headers)s.get('https://aiqicha.baidu.com/')r = s.get(aqc_search_url + parse.urlencode({"q": company_name}))if r.ok:soup = BeautifulSoup(r.text, "html.parser")script = soup.find_all('script')[2].textwhile 'window.pageData' not in script:input('可能需要登录才能继续使用!')information = json.loads(script[script.find('{'): script.rfind('};') + 1])  # 全部细节if "resultList" not in information["result"]:return f"未搜寻到公司 “{company_name}” !"for info in information["result"]["resultList"]:name_ = BeautifulSoup(info["entName"], "html.parser").text.replace('(', '(').replace(')', ')')pid = info["pid"]if company_name != name_.replace(name_[name_.find('('): name_.rfind(')') + 1], '') and company_name != name_.replace('(', '').replace(')', ''):continues.headers["Referer"] = f"{aqc_detail_url}{pid}"r = s.get(f'{aqc_data_url}{pid}')if r.ok:information = r.json()["data"]["basicData"]company = {"企业名称": information["entName"],"法定代表人": information["legalPerson"],"经营状态": information["openStatus"],"统一社会信用代码": information["unifiedCode"],"工商注册号": information.get("regCode", ""),"组织机构代码": information["orgNo"],"纳税人识别号": information["taxNo"],"注册资本": information["regCapital"],"实缴资本": information["realCapital"],"登记机关": information["authority"],"成立日期": information["annualDate"],"核准日期": information["annualDate"],"营业期限": information["openTime"],"注册地址": information["regAddr"],"经营范围": information["scope"],"企业类型": information["entType"],"所属行业": information["industry"],"行政区划": information["district"],"参保人数": information["insuranceInfo"]["insuranceNum"],"曾用名": information["prevEntName"]}return companyreturn f"获取公司 “{name_}” 详情信息失败!"return f"未搜寻到公司 “{company_name}” !"return "搜索失败!"def tyc_get_company(company_name):  # 天眼查查了几次后就必须要登录查,被天眼查必须登录烦了,lxml 似乎比 html.parser 牛逼r = requests.get(tyc_search_url + parse.urlencode({"key": company_name}), headers=headers, cookies={"cookie": tyc_cookie})if r.ok:soup = BeautifulSoup(r.text, "html.parser")table = soup.find("div", attrs={"class": "result-list sv-search-container"})if table is None:return f"未搜寻到公司 “{company_name}” !"for tr in table.find_all("div", attrs={"class": "search-item sv-search-company"}):info = tr.find("div", attrs={"class": "content"})name_ = info.find("div", attrs={"class": "header"}).find('a').text.replace('(', '(').replace(')', ')')url = info.find("div", attrs={"class": "header"}).find('a')["href"]if company_name != name_.replace(name_[name_.find('('): name_.rfind(')') + 1], '') and company_name != name_.replace('(', '').replace(')', ''):continuer = requests.get(url, headers=headers, cookies={"cookie": tyc_cookie})if r.ok:soup = BeautifulSoup(r.text, "lxml")information = soup.find('div', attrs={"id": "_container_baseInfo"}).find('table').find('tbody')attrs = {}for row in information.find_all('tr'):cols = row.find_all('td')if len(cols) % 2:cols = cols[:-1]for col in range(len(cols) // 2):if cols[col * 2 + 1].find('div', attrs={"class": "name"}):value = cols[col * 2 + 1].find('div', attrs={"class": "name"}).textelif cols[col * 2 + 1].find('span', attrs={"class": "sort-score-value"}):value = cols[col * 2 + 1].find('span', attrs={"class": "sort-score-value"}).textelif cols[col * 2 + 1].find('text', attrs={"class": "tyc-num lh24"}):value = ''for k in cols[col * 2 + 1].find('text', attrs={"class": "tyc-num lh24"}).text:value += gid.get(k, '-')else:value = cols[col * 2 + 1].textattrs[cols[col * 2].find(text=True)] = valuereturn attrsreturn f"获取公司 “{name_}” 详情信息失败!"return f"未搜寻到公司 “{company_name}” !"return "搜索失败!"if __name__ == '__main__':# 公司名示例:浙江阿瓦隆科技有限公司print(aqc_get_company(''))print(tyc_get_company(""))


http://www.ppmy.cn/news/789486.html

相关文章

天眼查数据采集、分析、深度挖掘

天眼查数据采集与分析 1、天眼查是什么 天眼查是由商业查询平台,在基于独有核心技术图数据库的基础上, 构建了完备的集数据采集、数据清洗、数据聚合、数据建模、数据产品化为一体的大数据解决方案。 秉持“让每个人公平地看清这个世界”的使命&#xff…

爬取企业信息-企业信用信息查询系统-天眼查爬虫

时隔2年多,偶然看到自己的这篇文章,看到下面好多求数据的同学,实在抱歉,一方面之前数据已经丢失,一方面个人博客许久未关注,故没有及时答复。 现在重新发送数据给各位同学,仅作学习使用&#x…

天眼查是怎么获得企业工商信息的?

工商信息主要来源爬虫抓取与即时更新 爬的: 工商局不提供任何数据接口,第三方数据库信息为爬取所得爬取信息属合规性质,工商局有义务公开企业信用信息目前各第三方数据库信息抓取方式如下: 通过爬取全国各省市企业信用信息公示系…

【行业了解】天眼查、企查查、启信宝、爱企查

【行业了解】天眼查、企查查、启信宝、爱企查 前言 今天写《【行业分析】矿泉水行业》的时候,简单从两个三方平台获取信息,不过毕竟是第三方平台,我不了解的话我心里不放心,于是简单了解一下查企业的第三方平台。 11月22写《【…

如何从天眼查获取海量公司信息

天眼查有一个高级搜索功能(需要VIP权限,淘宝购买1个7天试用约2元)。 天眼查内的公司大约2.6亿。 高级搜索会限制输出,查询最大输出是10万条。 因此,需要通过限制条件查询的方式,让查询输出小于10万条。 …

解决win11右键打开方式选择其他应用没反应的问题!!!

建两个文本文件,1.txt和2.txt,把下面两段代码粘贴进去,然后改文件名为1.reg和2.reg,双击运行 1.txt Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Unknown\shell\openas] hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6…

Altermanager安装和使用

1、Altermanager使用 1.1 什么是Alertmanager Alertmanager 与 Prometheus 是相互分离的两个组件,Prometheus 服务器根据报警规则将警报发送给 Alertmanager,然后 Alertmanager 将 silencing、inhibition、aggregation 等消息通过电子邮件、dingtalk …

Google 地图 API for Android

原文:Introduction to Google Maps API for Android 作者: Eunice Obugyei 译者:kmyhy 从健康类 app Runkeeper 到游戏 app 精灵宝可梦,位置服务对现代 app 来说越来越重要。 在本文中,我们将创建一个 app&#xf…