如何高效爬取天眼查企业工商信息:基于Excel列表的自动化方案
2025.09.18 15:59浏览量:7简介:本文详述如何基于Excel公司名称列表,通过编程实现天眼查平台的企业工商信息自动化爬取,涵盖技术选型、反爬策略应对及数据存储全流程。
一、项目背景与目标
企信通数据(企业信用信息)是商业决策、风险控制和市场分析的重要依据。天眼查作为国内领先的企业信息查询平台,提供了包括工商信息、法律诉讼、经营状况等在内的多维度数据。本方案针对”给定公司名称Excel列表”,设计一套自动化爬取流程,解决人工查询效率低、数据易错漏的问题,适用于金融机构风控、企业市场调研、律所尽职调查等场景。
二、技术选型与工具准备
1. 编程语言与库
- Python:因其丰富的爬虫库(如requests、selenium)和数据处理能力(pandas)成为首选。
- 关键库:
requests:发送HTTP请求,处理简单页面。selenium:模拟浏览器操作,应对动态加载内容。pandas:读写Excel文件,处理结构化数据。BeautifulSoup/lxml:解析HTML,提取目标数据。
2. 代理与反爬策略
天眼查对高频访问有严格限制,需准备:
- IP代理池:使用付费代理服务(如亮数据、快代理)或自建代理,避免单IP被封。
- User-Agent轮换:模拟不同浏览器访问,降低被识别风险。
- 请求间隔:通过
time.sleep()设置随机延迟(如1-3秒),模拟人工操作。
3. 开发环境
- Python 3.8+
- 安装依赖:
pip install requests selenium pandas beautifulsoup4 lxml
三、核心流程设计
1. Excel数据读取
使用pandas读取公司名称列表,支持.xlsx或.csv格式:
import pandas as pddef read_company_list(file_path):df = pd.read_excel(file_path) # 或 pd.read_csv()return df['公司名称'].tolist() # 假设列名为"公司名称"
2. 搜索页访问与结果解析
天眼查搜索URL格式为:https://www.tianyancha.com/search?key={公司名称}。需处理两种情况:
- 唯一匹配:直接跳转至企业详情页。
- 多结果:需从搜索结果页提取正确链接。
示例代码(搜索页解析):
from bs4 import BeautifulSoupimport requestsdef get_company_url(company_name, proxy):search_url = f"https://www.tianyancha.com/search?key={company_name}"headers = {'User-Agent': 'Mozilla/5.0'}try:response = requests.get(search_url, headers=headers, proxies=proxy)soup = BeautifulSoup(response.text, 'lxml')# 假设第一个结果为正确链接(需根据实际HTML结构调整)result_link = soup.find('a', class_='name')['href']return 'https://www.tianyancha.com' + result_linkexcept Exception as e:print(f"Error searching {company_name}: {e}")return None
3. 企业详情页爬取
企业详情页包含工商信息(如注册号、法定代表人、注册资本等),需定位关键DOM节点:
def scrape_company_info(url, proxy):headers = {'User-Agent': 'Mozilla/5.0'}try:response = requests.get(url, headers=headers, proxies=proxy)soup = BeautifulSoup(response.text, 'lxml')# 示例:提取注册资本(需根据实际HTML结构调整)registered_capital = soup.find('div', class_='registeredCapital').text.strip()# 提取其他字段...return {'注册资本': registered_capital,# 其他字段...}except Exception as e:print(f"Error scraping {url}: {e}")return None
4. 动态内容处理(Selenium方案)
若页面通过JavaScript动态加载,需使用selenium:
from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsdef selenium_scrape(url):chrome_options = Options()chrome_options.add_argument('--headless') # 无头模式driver = webdriver.Chrome(options=chrome_options)driver.get(url)# 等待页面加载(显式或隐式等待)registered_capital = driver.find_element_by_css_selector('.registeredCapital').textdriver.quit()return registered_capital
四、数据存储与输出
将爬取结果存入Excel或数据库:
def save_to_excel(data_list, output_path):df = pd.DataFrame(data_list)df.to_excel(output_path, index=False)# 示例调用company_list = read_company_list('input.xlsx')results = []for company in company_list:url = get_company_url(company, proxy={'http': 'http://123.123.123.123:8080'})if url:info = scrape_company_info(url, proxy)if info:info['公司名称'] = companyresults.append(info)save_to_excel(results, 'output.xlsx')
五、反爬策略优化
- 代理轮换:每次请求使用不同代理。
- Cookie管理:登录后保存Cookie,模拟用户行为。
- 降低频率:设置全局请求间隔(如5秒/次)。
- 异常处理:捕获
403、502等错误,自动重试或切换代理。
六、法律与合规注意事项
- 遵守robots协议:检查天眼查的
robots.txt,避免爬取禁止内容。 - 数据使用限制:仅用于合法用途,不得用于非法竞争或侵犯隐私。
- 频率控制:避免对天眼查服务器造成过大压力。
七、扩展与优化方向
- 多线程/异步爬取:使用
asyncio或scrapy提升效率。 - 数据清洗:对爬取结果进行标准化处理(如统一单位、格式)。
- 自动化调度:通过
Airflow或Celery实现定时爬取。
八、总结
本方案通过Python实现了从Excel列表读取公司名称、自动化搜索天眼查、爬取工商信息并存储的全流程。核心要点包括:
- 技术选型(requests/selenium、pandas、代理池)。
- 反爬策略(User-Agent轮换、请求间隔、代理)。
- 法律合规(robots协议、数据使用限制)。
实际应用中,需根据天眼查的页面结构调整解析逻辑,并持续优化反爬策略。对于大规模爬取,建议使用分布式爬虫框架(如Scrapy-Redis)提升效率。

发表评论
登录后可评论,请前往 登录 或 注册