Python 爬虫实战:公司财报数据抓取与分析全流程
引言
在金融数据分析领域,获取一手财报信息往往需要耗费大量时间。利用 Python 编写自动化脚本,不仅能从公司官网高效抓取结构化数据,还能结合 Pandas 进行后续清洗与可视化分析。本文将分享一套完整的实操方案,涵盖从环境搭建、静态/动态网页解析到数据落地的全过程。
环境准备
工欲善其事,必先利其器。我们需要安装以下核心库:
- Requests:处理 HTTP 请求,适合静态页面。
- BeautifulSoup4:解析 HTML/XML 文档。
- Selenium:模拟浏览器行为,应对 JavaScript 渲染的动态内容。
- Pandas:数据处理与分析的核心工具。
安装命令如下:
pip install requests beautifulsoup4 selenium pandas lxml
静态网页数据抓取
大多数传统企业官网的财报页面仍以静态 HTML 为主。使用 Requests 配合 BeautifulSoup 是最轻量级的选择。
发送请求与解析
首先构建请求头,模拟真实浏览器访问,避免被反爬机制拦截:
import requests
from bs4 import BeautifulSoup
url = "https://example.com/report"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get(url, headers=headers)
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "lxml")
提取关键数据
定位财报中的营收、净利润等字段。通常这些元素会有特定的 class 或 id:
# 假设数据位于 div.report-data 下
report_div = soup.find("div", class_="report-data")
revenue = report_div.find("span", class_="revenue").text
net_profit = report_div.find("span", class_="profit").text
print(f"营收:{revenue}, 净利:{net_profit}")
动态网页内容抓取
部分现代化网站采用 React 或 Vue 构建,数据通过 AJAX 异步加载。此时静态请求拿不到完整内容,必须使用 Selenium 驱动浏览器。
配置 Selenium 环境
首先需要下载对应浏览器的 WebDriver(如 ChromeDriver),确保版本匹配。初始化 Driver 时建议开启无头模式以节省资源:

