Python Selenium爬取T眼查企业工商历史变更信息全攻略
2025.09.18 15:59浏览量:1简介:本文详细介绍了如何使用Python Selenium框架爬取T眼查平台的企业工商历史变更信息,包括环境准备、代码实现、反爬策略应对及数据存储方法,适合开发者和企业用户参考。
Python Selenium爬取T眼查企业工商历史变更信息全攻略
一、技术背景与需求分析
企业工商历史变更信息(如股东变更、注册资本调整、经营范围修改等)是商业决策、尽职调查和法律风险评估的重要依据。T眼查作为国内主流企业信息查询平台,提供了结构化的工商变更记录,但手动查询效率低且无法批量处理。通过Python Selenium实现自动化爬取,可解决以下痛点:
- 效率提升:单企业查询时间从5分钟缩短至10秒
- 数据完整性:获取全量变更记录(含变更日期、变更项、变更前后内容)
- 批量处理:支持多企业信息自动化采集
二、技术实现方案
1. 环境准备
# 基础依赖安装pip install selenium pandas fake_useragent# 浏览器驱动下载(需匹配本地浏览器版本)# Chrome驱动下载地址:https://sites.google.com/chromium.org/driver/
关键组件:
- Selenium WebDriver:控制浏览器自动化操作
- ChromeDriver:与Chrome浏览器交互的桥梁
- Pandas:数据清洗与存储
- fake_useragent:生成随机User-Agent规避反爬
2. 核心代码实现
(1)浏览器初始化与反爬策略
from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsfrom fake_useragent import UserAgentdef init_browser():ua = UserAgent()options = Options()options.add_argument(f"user-agent={ua.random}")options.add_argument("--disable-blink-features=AutomationControlled")options.add_experimental_option("excludeSwitches", ["enable-automation"])options.add_experimental_option('useAutomationExtension', False)driver = webdriver.Chrome(executable_path='./chromedriver', # 替换为实际路径options=options)driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': '''Object.defineProperty(navigator, 'webdriver', {get: () => undefined})'''})return driver
反爬机制应对:
- 动态User-Agent轮换
- 禁用自动化特征标记
- CDP协议修改webdriver属性
(2)企业信息查询流程
def search_company(driver, company_name):base_url = "https://www.tianyancha.com"driver.get(base_url)# 输入企业名称并搜索search_box = driver.find_element("xpath", '//*[@id="home-main-search"]')search_box.send_keys(company_name)search_box.submit()# 切换至企业详情页(需处理弹窗和验证码)try:company_link = driver.find_element("xpath", '//div[@class="search-result-single"]/a')company_link.click()except:# 验证码处理逻辑(需接入打码平台)pass
关键点:
- XPath定位需根据T眼查实际DOM结构调整
- 验证码建议通过第三方服务(如超级鹰)处理
- 弹窗拦截需添加异常处理
(3)工商变更信息解析
def parse_change_history(driver):change_tabs = driver.find_elements("xpath", '//div[@class="ant-tabs-tab"]')for tab in change_tabs:if "工商变更" in tab.text:tab.click()break# 等待数据加载import timetime.sleep(2)changes = []change_items = driver.find_elements("xpath", '//div[@class="change-item"]')for item in change_items:date = item.find_element("xpath", './/div[@class="change-date"]').textcontent = item.find_element("xpath", './/div[@class="change-content"]').textchanges.append({"变更日期": date,"变更内容": content})return changes
数据结构示例:
[{"变更日期": "2023-05-10","变更内容": "股东变更:原股东张三退出,新增股东李四"},{"变更日期": "2022-08-15","变更内容": "注册资本变更:从100万增至500万"}]
3. 数据存储方案
import pandas as pddef save_to_excel(changes, company_name):df = pd.DataFrame(changes)df.to_excel(f"{company_name}_工商变更记录.xlsx", index=False)print(f"数据已保存至 {company_name}_工商变更记录.xlsx")
三、进阶优化策略
1. 分布式爬取架构
from multiprocessing import Pooldef process_company(name):driver = init_browser()try:search_company(driver, name)changes = parse_change_history(driver)save_to_excel(changes, name)finally:driver.quit()if __name__ == "__main__":companies = ["阿里巴巴", "腾讯", "字节跳动"] # 示例企业列表with Pool(3) as p:p.map(process_company, companies)
2. 代理IP池集成
from selenium.webdriver.common.proxy import Proxy, ProxyTypedef set_proxy(driver):proxy = Proxy({'proxyType': ProxyType.MANUAL,'httpProxy': '123.123.123.123:8080', # 替换为实际代理'sslProxy': '123.123.123.123:8080'})driver.desired_capabilities['proxy'] = proxy._to_capabilities()
3. 异常重试机制
from selenium.common.exceptions import TimeoutException, WebDriverExceptiondef robust_search(driver, company_name, max_retries=3):for attempt in range(max_retries):try:search_company(driver, company_name)return Trueexcept (TimeoutException, WebDriverException) as e:if attempt == max_retries - 1:raisetime.sleep(5 * (attempt + 1))
四、法律合规与伦理建议
- 遵守robots协议:检查T眼查的
/robots.txt文件,避免高频请求 - 数据使用限制:仅用于合法商业分析,不得用于非法用途
- 隐私保护:不采集个人敏感信息(如自然人股东身份证号)
- 频率控制:建议单IP每小时请求不超过30次
五、完整代码示例
# 完整实现需整合上述模块# 推荐项目结构:# /project# ├── chromedriver.exe# ├── main.py# ├── utils.py (封装浏览器操作)# └── companies.txt (待查询企业列表)
六、总结与展望
本方案通过Selenium实现了T眼查工商变更信息的自动化采集,相比传统API接口具有以下优势:
- 无需授权:避免API调用权限限制
- 数据全面:获取页面完整变更记录
- 灵活扩展:可轻松适配其他查询平台
未来优化方向:
提示:实际部署前需进行充分测试,建议先在测试环境验证DOM结构定位的准确性,并根据目标网站更新频率定期维护XPath规则。

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