Python抓取同花顺业绩预告并可视化分析全流程

栗子
栗子
发布时间:2026-10-12| 5人浏览过
原创

本文详解利用Python从同花顺财经抓取业绩预告数据的全过程。通过requests获取HTML源码,结合正则表达式提取股票代码、净利润及增长幅度,构建DataFrame进行数据清洗。最后使用Matplotlib绘制饼图,直观展示148家公司的盈利与亏损分布情况,为财务数据分析提供可视化参考。

首先确定爬取目标网站,访问同花顺财经数据中心中的业绩预告页面。

注意:若在使用发起请求时遇到返回内容为空的情况,请参考相关文档配置正确的Headers参数。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import re
import requests##把各种可能用到的包提前导好
headers={
   'Accept': 'text/html,*/*; q=0.01',
    'hexin-v': 'A2C11EVPFXAhNKl0PUpM6xp8MWU2aUUO5k-YOdpwLngMrQpTgnkUwzZdaMMp',
    'Referer': 'http://data.10jqka.com.cn/financial/yjyg/',
   'Cookie':'对应填写',
    'User-Agent':'对应填写'
}
url="http://data.10jqka.com.cn/ajax/yjyg/date/2021-12-31/board/ALL/field/enddate/order/desc/page/{}/ajax/1/free/1/"
result = ''
 
for i in range(1,5): 
    result += requests.get(url.format(i), headers=headers).text
result

执行爬取操作后,需对获取的数据进行初步检查,确认抓取是否成功。

接下来,从原始数据中提取序号、股票代码等关键信息字段。

index = re.findall('<td>(.*)</td>',result)
index

经校验,共有148条数据符合预期结果。随后利用正则表达式进一步筛选股票代码,具体正则用法可参考相关示例文章。

stock_code = re.findall('class="stockCode">(.*)</a>',result)
print(stock_code)

将提取到的各项数据组合成对象,以便后续处理。

data = pd.DataFrame({
    "stock_code":stock_code,
    "stock_name":stock_name,
    "performance":performance,
    "summary":summary
}, index=index)
 
data

确认DataFrame组合成功,数据结构完整。

进入数据预处理阶段,对原始文本数据进行清洗和格式化。

利用正则表达式从摘要文本中分别提取净利润数值和增长幅度区间。

data['start_profit'] = data['summary'].str.extract('(-{0,1}\d{0,10}\.{0,1}\d{0,10})万元')
data['end_profit'] = data['summary'].str.extract('至(-{0,1}\d{0,10}\.{0,1}\d{0,10})万元')
data["start_range"] = data['summary'].str.extract('(\d{0,5}\.{0,1}\d{0,5})%') + "%"
data["end_range"] = data['summary'].str.extract('至(\d{0,5}\.{0,1}\d{0,5})%') + "%"
data.head()

根据提取的数据判断公司的盈利状态,定义盈利、亏损及不确定的分类逻辑。

 def if_profit(x):
    if x in ['业绩预降', '业绩大幅上升', '业绩大幅下降', '业绩预盈', '业绩预增', '预计扭亏']:
        return 1
    if x in ['预计减亏', '不确定','业绩预亏', '预计增亏', '预计续亏']:
        return -1
    return 0
data['is_profit'] = data.apply(lambda x : if_profit(x["performance"]),axis=1)
data.head()
##计算盈利多少
yingli = (data['is_profit'] == 1).sum()
yingli
##亏损多少
kuisun = (data['is_profit'] == -1).sum()
kuisun

基于统计结果,使用库绘制饼图,实现数据的可视化展示。

plt.pie([yingli,kuisun], labels=['盈利','亏损'], autopct='%.2f%%')
font={
    "family":"kaiti",
    "size":"15"
}
plt.rc("font",**font)
plt.title('148家公司盈利和亏损情况占比')
plt.show()

至此,完成了从Python抓取同花顺业绩预告数据到最终可视化的完整流程。如需了解更多Python抓取数据与可视化相关内容,建议查阅本站过往文章或继续浏览后续教程,感谢支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。