最近有朋友需要帮忙写个爬虫脚本,爬取雪球网一些上市公司的财务数据。盆友希望可以根据他自己的选择进行自由的抓取,所以简单给一份脚本交给盆友,盆友还需要自己搭建python环境,更需要去熟悉一些参数修改的操作,想来也是太麻烦了。
于是,结合之前做过的汇率计算器小工具,我这边决定使用PyQt5给朋友制作一个爬虫小工具,方便他的操作可视化。
一、效果演示
二、功能说明
- 可以自由选择证券市场类型:A股、美股和港股
- 可以自由选择上市公司:单选或全选
- 可以自由选择财务数据类型:单选或全选(主要指标、利润表、资产负债表、现金流表)
- 可以导出数据存储为excel表格文件
- 支持同一家上市公司同类型财务数据追加
三、制作过程
首先引入需要的库
import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication, QMainWindow,QFileDialog import os import requests from fake_useragent import UserAgent import json import logging import time import pandas as pd from openpyxl import load_workbook
雪球网页拆解
这一步的目的是获取需要爬取的数据的真正URL地址规律。
当我选中某只股票查看财务数据某类型数据报告时,点击下一页,网站地址没有变化,基本可以知道这是动态加载的数据,对于这类数据可以使用F12打开开发者模式。
在开发者模式下,选到Network—>XHR可以查看到真正的数据获取地址URL及请求方式(General里是请求URL和请求方式说明,Request Headers有请求头信息,如cookie,Query String Parameters就是可变参数项,一般来说数据源URL就是由基础URL和这里的可变参数组合而成)
我们分析这段URL,可以发现其基本结构如下:
基于上述结构,我们拆分最终的组合URL地址如下
#基础网站
base_url = f'https://stock.xueqiu.com/v5/stock/finance/{ABtype}'
#组合url地址
url = f'{base_url}/{data_type}.json?symbol={ipo_code}&type=all&is_detail=true&count={count_num}×tamp={start_time}'
新手学习,Python 教程/工具/方法/解疑+V:itz992
操作界面设计
操作界面设计使用的是PyQt5,这里不做更详细的介绍,我们在后续中对PyQt5的使用再专题讲解。
使用QT designer对操作界面进行可视化设计,参考如下:
雪球网数据提取.ui中各个组件的相关设置,参考如下:
.ui文件可以使用pyuic5指令进行编译生成对应的.py文件,或者我们也可以在vscode里直接转译(这里也不做更详细的介绍&#