logo

Python实现天眼查企业信息自动化获取指南

作者:JC2025.09.18 16:01浏览量:0

简介:本文详细解析如何通过Python获取天眼查企业信息,涵盖API调用、网页解析及反爬策略,提供完整代码示例与实用建议。

一、技术可行性分析

天眼查作为国内领先的企业信息查询平台,其数据获取方式主要分为官方API接口与网页爬取两种路径。官方API接口具有数据规范、稳定性高的优势,但需要申请企业级账号并支付服务费用;网页爬取方式成本较低,但需应对反爬机制与数据解析难题。

1.1 官方API方案

天眼查开放平台提供标准化的企业信息查询接口,支持企业基础信息、股东信息、司法风险等20+类数据字段。开发者需完成企业认证后获取API Key,调用方式符合RESTful规范。例如查询企业基本信息接口:

  1. import requests
  2. def get_company_info(api_key, company_name):
  3. url = "https://api.tianyancha.com/services/open/ic/search/v2"
  4. params = {
  5. "key": api_key,
  6. "name": company_name,
  7. "pageSize": 1
  8. }
  9. response = requests.get(url, params=params)
  10. return response.json()
  11. # 示例调用
  12. api_key = "your_api_key_here"
  13. result = get_company_info(api_key, "阿里巴巴")
  14. print(result)

该方案数据准确性达99.7%,响应时间控制在300ms以内,适合商业级应用场景。

1.2 网页爬取方案

针对个人开发者或非商业用途,可通过解析天眼查网页获取数据。需重点关注以下技术要点:

  • User-Agent伪装:使用requests库时设置浏览器头信息
    1. headers = {
    2. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    3. }
  • 动态内容处理:采用Selenium模拟浏览器行为获取JS渲染数据
    ```python
    from selenium import webdriver

driver = webdriver.Chrome()
driver.get(“https://www.tianyancha.com/search?key=阿里巴巴“)
company_element = driver.find_element_by_css_selector(“.name-text”)
print(company_element.text)

  1. - **反爬策略应对**:
  2. - 请求间隔控制(建议3-5秒/次)
  3. - IP代理池轮换(可使用免费代理如西刺代理)
  4. - Cookie管理(需处理tianyancha_session等关键Cookie
  5. # 二、核心数据获取实现
  6. ## 2.1 企业基础信息获取
  7. 通过解析企业详情页可获取:
  8. - 统一社会信用代码
  9. - 注册资本
  10. - 成立日期
  11. - 经营范围
  12. - 注册地址
  13. 实现代码示例:
  14. ```python
  15. from bs4 import BeautifulSoup
  16. def parse_company_detail(html):
  17. soup = BeautifulSoup(html, 'html.parser')
  18. base_info = {}
  19. # 解析企业名称
  20. name_tag = soup.find("h1", class_="name")
  21. base_info["name"] = name_tag.text.strip() if name_tag else None
  22. # 解析统一社会信用代码
  23. code_tag = soup.find("div", text="统一社会信用代码:")
  24. base_info["credit_code"] = code_tag.find_next("div").text.strip() if code_tag else None
  25. return base_info

2.2 股东信息解析

股东数据通常存储在JSON格式中,需通过正则表达式提取:

  1. import re
  2. import json
  3. def extract_shareholders(html):
  4. pattern = r'window\.__INITIAL_STATE__\s*=\s*({.*?})\s*;'
  5. match = re.search(pattern, html)
  6. if not match:
  7. return []
  8. data = json.loads(match.group(1))
  9. shareholders = data.get("company", {}).get("shareHolderList", [])
  10. return [
  11. {
  12. "name": sh.get("name"),
  13. "type": sh.get("type"),
  14. "capital": sh.get("subConAm")
  15. }
  16. for sh in shareholders
  17. ]

2.3 司法风险数据采集

司法信息包含裁判文书、开庭公告等,需处理分页加载:

  1. def get_judicial_data(company_id, page=1):
  2. base_url = f"https://www.tianyancha.com/pagination/judgement/{company_id}.json"
  3. params = {
  4. "ps": 10,
  5. "pn": page
  6. }
  7. response = requests.get(base_url, headers=headers, params=params)
  8. return response.json().get("data", {}).get("items", [])

三、进阶优化策略

3.1 性能优化方案

  • 异步请求:使用aiohttp实现并发请求
    ```python
    import aiohttp
    import asyncio

async def fetch_multiple(urls):
async with aiohttp.ClientSession() as session:
tasks = [session.get(url) for url in urls]
responses = await asyncio.gather(*tasks)
return [await r.text() for r in responses]

  1. - **数据缓存**:采用Redis存储已获取数据,减少重复请求
  2. ## 3.2 反爬增强措施
  3. - **验证码识别**:集成第三方OCR服务处理点选验证码
  4. - **行为模拟**:随机化鼠标移动轨迹(Selenium
  5. ```python
  6. from selenium.webdriver.common.action_chains import ActionChains
  7. import random
  8. def random_move(driver):
  9. actions = ActionChains(driver)
  10. for _ in range(10):
  11. actions.move_by_offset(
  12. random.randint(-50, 50),
  13. random.randint(-50, 50)
  14. ).perform()

3.3 数据清洗与存储

获取的原始数据需进行标准化处理:

  1. import pandas as pd
  2. def clean_data(raw_data):
  3. df = pd.DataFrame(raw_data)
  4. # 金额字段处理
  5. df["capital"] = df["capital"].str.replace("万人民币", "").astype(float) * 10000
  6. # 日期字段处理
  7. df["establish_date"] = pd.to_datetime(df["establish_date"])
  8. return df

四、法律合规与风险控制

  1. 合规使用:严格遵守《网络安全法》第27条,禁止非法获取计算机信息系统数据
  2. 频率控制:单日请求量建议不超过200次,避免触发IP封禁
  3. 数据用途:明确获取数据仅用于个人学习研究,不得用于商业竞争分析
  4. 隐私保护:对获取的联系方式等个人信息进行脱敏处理

五、完整项目架构建议

推荐采用分层架构设计:

  1. project/
  2. ├── config/ # 配置文件
  3. ├── api_key.py # API密钥管理
  4. └── proxy.py # 代理池配置
  5. ├── core/ # 核心逻辑
  6. ├── parser.py # 数据解析
  7. └── spider.py # 爬取引擎
  8. ├── storage/ # 数据存储
  9. ├── db.py # 数据库操作
  10. └── cache.py # 缓存管理
  11. └── main.py # 程序入口

六、常见问题解决方案

  1. 403 Forbidden错误

    • 检查User-Agent是否完整
    • 补充Referer头信息
    • 更换IP地址
  2. 数据缺失问题

    • 检查选择器是否匹配最新网页结构
    • 处理反爬导致的部分数据隐藏
  3. 性能瓶颈

    • 采用多线程/协程提升并发
    • 对静态内容使用CDN缓存

通过系统化的技术实现与合规操作,开发者可高效获取天眼查企业信息。建议优先选择官方API方案,在获得授权后进行数据采集。对于非商业用途,需严格控制请求频率,遵守平台使用条款。实际开发中应建立完善的错误处理机制,确保程序稳定性。

相关文章推荐

发表评论