1. 为什么选择Python+AI实现零基础爬虫?
天眼查这类商业信息平台的数据采集需求在金融风控、市场调研等领域一直存在,但传统爬虫开发对新手而言存在三大门槛:反爬机制理解、网页结构解析、数据清洗逻辑。而如今AI工具的介入彻底改变了这一局面。
我去年指导过一个完全零编程基础的金融实习生,她用GPT-4辅助+Python基础语法,三天就完成了天眼查企业基本信息的采集脚本。这背后是两种技术范式的结合:
-
Python的易用性:相比Java/C++,Python的requests、BeautifulSoup等库用10行代码就能完成HTTP请求到数据提取的全流程。动态类型特性让新手不用纠结变量声明,REPL环境可以实时测试代码片段。
-
AI的认知补偿:大语言模型能:
- 将自然语言需求转成可执行代码("帮写个获取天眼查企业名称的Python函数")
- 解释复杂概念("XPath和CSS选择器有什么区别?")
- 调试报错信息("SSL证书验证失败该怎么处理?")
实测发现:用ChatGPT解释Python网络请求原理,比90%的教程更易懂。它会用"就像邮差送信需要写明收件人地址"来类比HTTP请求结构。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 天眼查爬虫的技术实现路径
2.1 逆向分析天眼查网页结构
打开天眼查搜索页(以"科技公司"为例),按F12进入开发者工具:
-
网络请求观察:搜索动作触发的是
/search的POST请求,关键参数包括:python复制{ "key": "科技公司", # 搜索关键词 "pageNum": 1, # 分页参数 "sortType": 0 # 排序方式 } -
数据定位:企业信息存储在
<div class="search-result-single">节点下,用CSS选择器可提取:python复制# 企业名称 .name ">[title]" # 法定代表人 .legalPersonName >> text # 注册资本 .registCapital >> text
注意:天眼查2023年更新了动态class名机制,建议改用XPath的contains()函数定位:
python复制//div[contains(@class, "search-result")]/@title
2.2 用AI辅助编写核心代码
向ChatGPT输入提示词:
code复制我需要一个Python爬虫脚本,要求:
1. 使用requests和BeautifulSoup
2. 能分页爬取天眼查搜索页结果
3. 提取企业名称、法人、注册资本
4. 处理可能的反爬机制
得到的代码框架经人工优化后:
python复制import requests
from bs4 import BeautifulSoup
import time
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit...',
'Cookie': '你的登录Cookie' # 需手动获取
}
def scrape_tianyancha(keyword, pages=3):
results = []
for page in range(1, pages+1):
url = 'https://www.tianyancha.com/search'
data = {'key': keyword, 'pageNum': page}
resp = requests.post(url, headers=headers, data=data)
soup = BeautifulSoup(resp.text, 'html.parser')
companies = soup.select('div.search-result-single') # 需根据实际调整
for comp in companies:
name = comp.select_one('.name').get('title')
legal_person = comp.select_one('.legalPersonName').text
capital = comp.select_one('.registCapital').text
results.append([name, legal_person, capital])
time.sleep(2) # 遵守爬虫礼仪
return results
2.3 关键问题AI调试实录
场景1:遇到403 Forbidden错误
- 错误复现:直接运行脚本返回状态码403
- AI诊断:GPT-4建议添加以下防御措施:
python复制headers.update({ 'X-Forwarded-For': '随机IP', # 防止IP封锁 'Accept-Language': 'zh-CN,zh;q=0.9', # 模拟浏览器行为 })
场景2:数据提取为空
- 排查过程:
- 检查CSS选择器是否匹配最新页面结构
- AI建议改用浏览器复制JS路径:
python复制soup.select('div[class^="search-result"]') # 匹配class前缀
3. 零基础学习路径设计
3.1 Python速成要点
对于纯新手,只需掌握这些即可开始爬虫:
python复制# 变量与数据类型
name = "企业名称" # 字符串
page_num = 1 # 整数
# 列表存储结果
results = []
# 循环结构
for page in range(1, 6):
print(f"正在爬取第{page}页")
# 函数定义
def get_data(url):
return requests.get(url).text
推荐使用Jupyter Notebook实时练习,每个代码块可独立运行查看结果
3.2 AI提示词工程技巧
有效提问模板:
code复制你是一个专业的Python爬虫工程师,请帮我:
1. 解释[requests.post()]方法的参数含义
2. 给出一段处理天眼查分页的代码示例
3. 指出代码中可能存在的反爬风险点
避免模糊提问如"怎么写爬虫",应该:
- 指定目标网站
- 说明需要的数据字段
- 告知遇到的特定错误
4. 合规与反爬对抗策略
4.1 法律风险边界
根据《网络安全法》和天眼查Robots协议:
- 禁止爬取个人隐私数据(如股东身份证号)
- 请求频率控制在30秒/页以上
- 数据仅限个人研究使用
4.2 技术防护方案
-
IP轮询:使用免费代理池(需测试可用性)
python复制proxies = { 'http': 'http://110.123.45.67:8080', 'https': 'https://110.123.45.67:8080' } requests.get(url, proxies=proxies) -
请求指纹模拟:
python复制headers = { 'Accept': 'text/html,application/xhtml+xml...', 'Sec-Fetch-Dest': 'document', 'Upgrade-Insecure-Requests': '1' } -
验证码处理:
- 简单图形验证码可用Tesseract OCR识别
- 复杂验证码建议人工打码或使用商业识别API
5. 数据存储与分析延伸
5.1 结构化存储方案
将结果保存为CSV:
python复制import csv
with open('companies.csv', 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['名称', '法人', '注册资本'])
writer.writerows(results)
或存入SQLite数据库:
python复制import sqlite3
conn = sqlite3.connect('data.db')
c = conn.cursor()
c.execute('''CREATE TABLE companies
(name text, legal_person text, capital text)''')
c.executemany("INSERT INTO companies VALUES (?,?,?)", results)
conn.commit()
5.2 数据分析示例
用Pandas做基础分析:
python复制import pandas as pd
df = pd.read_csv('companies.csv')
# 注册资本分析
df['capital_num'] = df['注册资本'].str.extract('(\d+)').astype(float)
print(df['capital_num'].describe())
# 法人关联企业统计
legal_person_count = df['法人'].value_counts()
print(legal_person_count.head(10))
6. 从爬虫到商业应用的跨越
在我经手的电商竞品分析项目中,天眼查数据结合爬虫技术产生了三大价值:
- 供应链分析:通过法人关联信息发现隐性关联企业
- 风险预警:监控目标公司司法风险变更
- 市场洞察:统计行业分布验证商业假设
但要注意:2023年天眼查升级了风控系统,建议:
- 优先使用其官方API(需企业认证)
- 爬取数据需进行数据脱敏处理
- 建立数据更新机制(如每周增量爬取)
对于持续学习建议:
- 进阶学习Scrapy框架提升效率
- 掌握Selenium处理动态渲染页面
- 了解分布式爬虫架构设计
