zoukankan      html  css  js  c++  java
  • 股票网站数据可视化,成为赌神不再是梦!!!

    :点击上方[Python爬虫数据分析挖掘]右上角[...][设为星标⭐]

    文章目录

      • 前言

      • 1、网页查看

      • 2、完整代码

      • 3、图片辅助分析

      • 4、运行结果

    前言

    以前喜欢看一些赌神电影,心想要是我有那么厉害的本领就好了,既能赚钱又能装X,O(∩_∩)O哈哈~ ,今天给大家带来一起股票网站数据可视化教程,好好看好好学,万一赚钱了,可别忘了我哦~~~



    -前  言-

    在这个系列中,我们将共同学习如何借助Python这个强大的工具处理金融数据。在正式开始这个系列的学习之前,需要您具有Python编程的基础知识,至少需要将Python安装好。

    • 本期所有的代码在3.x版本的Python环境下编译。学习之前请确保您已配置好编译环境。

    • 本期需要用到几个特定的Python库,学习之前请确保您已经安装好了下面这些库:

    模块名称
    功能描述
    numpynumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
    matplotlibmatplotlib 是 Python 的绘图库。它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
    pandaspandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
    pandas_datareaderpandas_datareader库提供了专门从财经网站获取金融数据的API接口,可作为量化交易股票数据获取的另一种途径,该接口在urllib3库基础上实现了以客户端身份访问网站的股票数据。

    如果代码运行过程中提示

     ModuleNotFoundError: No module named 'xxx'

    则表示您还没有安装对应名称 'xxx' 的Python库。您可以通过

    pip instal + 库名称

    命令在命令行(Windows)或者终端(MacOS)中安装。分别输入以下内容安装对应的库:

    pip install numpy
    pip install matplotlib
    pip install pandas
    

    1、网页查看

    本次爬取目标是雪球网,数据爬取之后进行可视化,方便查看
    

    我们查看网页源代码,发现页面中显示的数据在源代码中是没有的,所以数据应该是动态加载出来的

    打开控制台,点击XHR,刷新页面,可见如下请求,该请求正带着我们需要的数据
    


    我们点击第二页,第三页,可见有发出如下请求,这可以推断出,page的值就是
    

    OK,分析结束,上代码!!!


    2、完整代码

    import requests
    import json
    import csv
    import pandas as pd
    from pyecharts import options as opts
    from pyecharts.charts import Bar
    
    
    #头信息
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
    }
    
    
    
    
    #最后获取到的数据,我们先写入到csv文件,再进行数据可视化
    # mode="a" 表示追加写入
    file = open('data.csv', mode="a", encoding='utf-8', newline="")
    # fieldnames表头数据
    csvWrite = csv.DictWriter(file, fieldnames=['股票代码', '股票名称', '当前价', '涨跌额', '涨跌幅', '年初至今', '成交量', '成交额', '换手率',
                                                '市盈(TTM)', '股息率', '市值'])
    
    
    # 写入表头数据
    csvWrite.writeheader()
    
    
    #多页爬取,这里我就先爬取10页
    for i in range(1,10):
        print("=========正在爬取第"+str(i)+"页数据==========")
        #拼接url,注意要使用 str
        url = "https://xueqiu.com/service/v5/stock/screener/quote/list?page="+str(i)+"&size=30&order=desc&order_by=amount&exchange=CN&market=CN&type=sha&_=1601168743543"
        #数据返回格式为json,所以要使用.json(),方便之后的数据获取
        response = requests.get(url=url,headers=headers).json()
        
      #参考图1
        for data in response['data']['list']:
            #股票代码
            symbol = data['symbol']
            #股票名称
            name = data['name']
            #当前价
            current = data['current']
            #涨跌额
            chg = data['chg']
            if chg:
                if float(chg) > 0:
                    chg = "+" + str(chg)
                else:
                    chg = str(chg)
            #涨跌幅
            percent = str(data['percent']) + "%"
            #年初至今
            current_year_percent = str(data['current_year_percent']) + "%"
            #成交量
            volume = data["volume"]
            #成交额
            amount = data['amount']
            #换手率
            turnover_rate = str(data['turnover_rate']) + "%"
            #市盈(TTM)
            pe_ttm = data['pe_ttm']
            #股息率
            dividend_yield = data['dividend_yield']
            if dividend_yield:
                dividend_yield = str(dividend_yield) + "%"
            else:
                dividend_yield = None
            #市值
            market_capital = data['market_capital']
            data_dict = {'股票代码':symbol,'股票名称':name,'当前价':current,
                         '涨跌额':chg,'涨跌幅':percent,'年初至今':current_year_percent,
                         '成交量':volume,'成交额':amount,'换手率':turnover_rate,
                         '市盈(TTM)':pe_ttm,'股息率':dividend_yield,
                         '市值':market_capital}
        
        #写入到csv中
            csvWrite.writerow(data_dict)
    
    
    
    
    #读取csv文件
    data_df = pd.read_csv("data.csv")
    df = data_df.dropna()
    df1 = df[['股票名称','成交量']]
    #取前30条数据
    df2 = df1.iloc[:30]
    
    
    
    
    c = (
        Bar(init_opts=opts.InitOpts(width="1500px",height="660px",page_title="股票数据可视化")).add_xaxis(list(df2['股票名称'].values))
        .add_yaxis('股票成交量情况',list(df2['成交量'].values))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="成交量图表"),
            datazoom_opts=opts.DataZoomOpts()
        )
        .render("data.html")
    )
    
    
    

    3、图片辅助分析

    图1

    4、运行结果

    - END -

    各种爬虫源码获取方式

    识别文末二维码,回复:爬虫源码

    欢迎关注公众号:Python爬虫数据分析挖掘,方便及时阅读最新文章

    记录学习python的点点滴滴;

    回复【开源源码】免费获取更多开源项目源码;

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    [SIP]SIP之穿越NAT 幻灯片
    此Slashdotcn模仿彼Slashdot
    [RTC]如何得到Interop.RTCCore.dll
    androidmanifest.xml权限中文说明
    Android Service学习之本地服务
    从问题看本质:socket到底是什么?
    Android小项目之服务【Service】
    listen函数
    Android开发资源完全汇总
    ANDROID基础知识普
  • 原文地址:https://www.cnblogs.com/chenlove/p/14038533.html
Copyright © 2011-2022 走看看