Python 爬虫实战:批量获取股票实时行情数据
前言
网络爬虫是数据采集的重要手段,在金融数据分析、市场监控等领域有着广泛应用。本文将以 Python 为例,演示如何编写一个爬虫程序,通过解析网页列表获取股票代码,调用接口获取实时行情数据,并将结果存储至 MySQL 数据库。内容涵盖环境搭建、网络请求分析、JSONP 数据处理、异常处理机制及数据库操作等关键技术点,适合初学者进行爬虫练手。
环境准备
在开始之前,请确保已安装以下依赖库:
pip install requests pyquery pymysql
同时需要配置好 MySQL 数据库环境,并创建一个用于存储数据的数据库(例如 test)。
数据分析
1. 获取股票代码列表
首先我们需要知道有哪些股票。这里我们使用古成网的股票列表页面作为数据源:
https://hq.gucheng.com/gpdmylb.html
打开浏览器开发者工具(F12),切换到 Network 标签页,刷新页面,可以发现该页面是通过 HTML 直接渲染的静态链接。我们需要提取所有包含 6 位数字的股票代码链接。
2. 获取股票详情数据
进入任意一只股票的详情页(如平安银行),观察其数据加载方式。我们发现数据并非直接渲染在 HTML 中,而是通过 AJAX 请求从后端接口获取。
接口地址示例:
http://qd.10jqka.com.cn/quote.php?cate=real&type=stock&callback=showStockDate&return=json&code=000001
注意返回的数据格式为 JSONP,即包裹在回调函数 showStockDate(...) 中的 JSON 字符串。我们需要剥离头尾的函数名,将其转换为标准 JSON 对象进行解析。
数据库设计
为了存储爬取的数据,我们需要创建一张表。字段包括股票代码、名称、价格、成交量等信息。
CREATE TABLE IF NOT EXISTS stock (
id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(20) NOT NULL COMMENT '股票代码',
name VARCHAR(50) NOT NULL COMMENT '股票名称',
jinkai DECIMAL(10,2) COMMENT '今开',
chengjiaoliang DECIMAL(20,2) COMMENT '成交量',
zhenfu DECIMAL(10,2) COMMENT '振幅',
zuigao (,) COMMENT ,
chengjiaoe (,) COMMENT ,
huanshou (,) COMMENT ,
zuidi (,) COMMENT ,
zuoshou (,) COMMENT ,
liutongshizhi (,) COMMENT ,
create_date DATETIME COMMENT
) ENGINEInnoDB CHARSETutf8mb4;


