Python财经股票数据保存表格文件, 实现可视化分析

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

环境使用:

  • Python 3.8 解释器

  • Pycharm 编辑器

模块使用:

第三方:

  • import requests —> 数据请求模块

内置:

  • import csv

Python财经股票数据保存表格文件, 实现可视化分析_第1张图片

基本流程:

一. 数据来源分析

  1. 明确需求

    • 明确采集网站以及数据内容

      数据: 股票基本信息

  2. 抓包分析: 通过浏览器自带工具 开发者工具抓包分析具体数据对应链接地址

    • 打开开发者工具: F12 / 右键点击检查选择network

    • 点击第二页数据

二. 代码实现步骤

  1. 发送请求, 模拟浏览器对于url地址发送请求

  2. 获取数据, 获取服务器返回响应数据

    开发者工具: response

  3. 解析数据, 提取我们需要的数据内容

    股票基本信息

  4. 保存数据, 保存本地文件里面

代码展示

采集数据

# 导入数据请求模块 第三方模块 需要安装 pip install requests
import requests
# 导入格式化输出模块
from pprint import pprint
# 导入csv模块
import csv


f = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '股票代码',
    '股票名称',
    '当前价',
    '涨跌额',
    '涨跌幅',
    '年初至今',
    '成交量',
    '成交额',
    '换手率',
    '市盈率(TTM)',
    '股息率',
    '市值',
    '详情页',
])
csv_writer.writeheader() # 写入表头
for page in range(1, 51):
    # 请求链接
    url = f'*****/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&order_by=amount&exchange=CN&market=CN&type=sha'
    # 模拟浏览器 <字典数据类型, 构建完整键值对>
    源码、解答、教程等加V:qian97378免费领取
    headers = {
        # Cookie 用户信息, 常用于检测是否登陆账号
        'Cookie': 'xq_a_token=197a3a870824d1754f6edf083d719bd1a3aabe88; xqat=197a3a870824d1754f6edf083d719bd1a3aabe88; xq_r_token=f3676d47182482b690747de814788450c6d4fcf1; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTY5MTYyNzcwNSwiY3RtIjoxNjg5NzY2Mzg5NjAwLCJjaWQiOiJkOWQwbjRBWnVwIn0.kPidbnXxvaxVhgELNZsOTHp8Wzl48BsDxZV7NV3ADScuLTjgAnhSBC3dT_AV6bgnl_xiQXbTR2jedY3jxFv-IAu_t__4UtwtLX8wXBSueU5ZaqMuvOPvM12XP9MPK0wOGzfLVAtChiEZPmuLwjFANG4w6cMJLQ02FpWJtJQgokPySrZgg_TI6u0jteBvWhS53sfQAcZlqGlco3O8BhDwlqNQP_iLM1R5VI5mHfJRt2caHBMgnCPiciWG7qHXAPmt06xtpQE5TO15fY7GCiz8rYZBG4fmgpSPJ9h0FP7MjjN0vWQbgLHPaS-5D0RuQFm0R-3gyIS_djaWQ-fOS9ZyjQ; u=271689766418619; device_id=85fe3280c6b31edcc015c85ae7d9fe9f; Hm_lvt_1db88642e346389874251b5a1eded6e3=1689766420; s=bt11txvrd2; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1689767865',
        # User-Agent 用户代理 表示浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    # 发送请求 <被封IP了, 就可以加IP代理> proxies IP代理
    response = requests.get(url=url, headers=headers)
    # for循环遍历 列表里面元素一个一个提取出来
    for index in response.json()['data']['list']:
        # 字典键值对取值就可以了
        dit = {
            '股票代码': index['symbol'],
            '股票名称': index['name'],
            '当前价': index['current'],
            '涨跌额': index['chg'],
            '涨跌幅': index['amplitude'],
            '年初至今': index['current_year_percent'],
            '成交量': index['volume'],
            '成交额': index['amount'],
            '换手率': index['turnover_rate'],
            '市盈率(TTM)': index['pe_ttm'],
            '股息率': index['dividend_yield'],
            '市值': index['float_market_capital'],
            # 格式化输出
            '详情页': f'*****/S/{index["symbol"]}',
        }
        csv_writer.writerow(dit)
        print(dit)

Python财经股票数据保存表格文件, 实现可视化分析_第2张图片

数据可视化

import pandas as pd
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
df = pd.read_csv('data.csv')
df.head()

Python财经股票数据保存表格文件, 实现可视化分析_第3张图片

top10 = df[['股票名称', '当前价']].sort_values('当前价', ascending=False)[:10]
names = list(top10['股票名称'])
counts = list(top10['当前价'])
from pyecharts import options as opts
from pyecharts.charts import Bar

c = (
    Bar()
    .add_xaxis(names)
    .add_yaxis("", counts)
#     .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="股票数据分析", subtitle="股票当前价Top10"),
    )
#     .render("bar_rotate_xaxis_label.html")
)
c.load_javascript()
top10 = df[['股票名称', '成交量']].sort_values('成交量', ascending=False)[:10]
names = list(top10['股票名称'])
counts = list(top10['成交量'])
from pyecharts import options as opts
from pyecharts.charts import Bar
源码、解答、教程等加V:qian97378免费领取
c = (
    Bar()
    .add_xaxis(names)
    .add_yaxis("", counts)
#     .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="股票数据分析", subtitle="股票成交量Top10"),
    )
#     .render("bar_rotate_xaxis_label.html")
)
c.render_notebook()
top10 = df[['股票名称', '涨跌额']].sort_values('涨跌额', ascending=False)[:10]
names = list(top10['股票名称'])
counts = list(top10['涨跌额'])
from pyecharts import options as opts
from pyecharts.charts import Bar

c = (
    Bar()
    .add_xaxis(names)
    .add_yaxis("", counts)
#     .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="股票数据分析", subtitle="股票涨跌额Top10"),
    )
#     .render("bar_rotate_xaxis_label.html")
)
c.render_notebook()

Python财经股票数据保存表格文件, 实现可视化分析_第4张图片

Python财经股票数据保存表格文件, 实现可视化分析_第5张图片

Python财经股票数据保存表格文件, 实现可视化分析_第6张图片

尾语

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀

你可能感兴趣的:(爬虫小案例,python,开发语言,pycharm,学习)