• python采集财经数据信息并作可视化~


    前言 😋

    大家早好、午好、晚好吖~

    开发环境:

    • 解释器版本: python 3.8

    • 代码编辑器: pycharm 2021.2

    • requests: pip install requests

    • pandas: pip install pandas

    • pyecharts: pip install pyecharts

    思路:

    模拟成 浏览器 向 服务器 发送网络请求

    找到数据来源

    动态的数据: 如果在网页源代码当中找不到的数据

    静态的数据: 如果在网页源代码当中能够找到该数据

    实现代码:

    1. 发送请求

    2. 获取数据

    3. 解析数据

    4. 保存数据

    代码

    import requests     # 发送请求 第三方模块
    import csv          # 内置模块
    import concurrent.futures
    
    • 1
    • 2
    • 3

    源码、解答、教程加Q裙:261823976 点击蓝字加入【python学习裙】

    请添加图片描述

    f = open('网易财经.csv', mode='a', newline='', encoding='utf-8')
    csv_writer = csv.writer(f)
    csv_writer.writerow(['代码','名称','价格','涨跌幅','涨跌额','5分钟涨跌额','今开','昨收','最高','最低','成交量','成交额','换手率','量比','委比','振幅','市盈率','流通市值','总市值','每股收益','净利润','主营收'])
    
    headers = {
        # 浏览器的基本信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
    }
    for page in range(0, 205):
        url = f'http://quotes.money.163.com/hs/service/diyrank.php?host=http%3A%2F%2Fquotes.money.163.com%2Fhs%2Fservice%2Fdiyrank.php&page={page}&query=STYPE%3AEQA&fields=NO%2CSYMBOL%2CNAME%2CPRICE%2CPERCENT%2CUPDOWN%2CFIVE_MINUTE%2COPEN%2CYESTCLOSE%2CHIGH%2CLOW%2CVOLUME%2CTURNOVER%2CHS%2CLB%2CWB%2CZF%2CPE%2CMCAP%2CTCAP%2CMFSUM%2CMFRATIO.MFRATIO2%2CMFRATIO.MFRATIO10%2CSNAME%2CCODE%2CANNOUNMT%2CUVSNEWS&sort=PERCENT&order=desc&count=24&type=query'
        # 1. 发送请求
        response = requests.get(url, headers=headers)
        # 2. 获取数据
        # .text: 网页源代码, xx源代码  复杂一点
        # .content: 当你的链接里面的数据 是属于 视频/音频/图片
        # .json(): {}/[] 包裹起来的   Python里面的字典类型数据  方便我们接下来解析数据
        json_data = response.json()
        # 3. 解析数据
        for i in range(0, len(json_data['list'])):
            CODE = json_data['list'][i]['CODE']
            NAME = json_data['list'][i]['NAME']
            PRICE = json_data['list'][i]['PRICE']
            PERCENT = json_data['list'][i]['PERCENT']
            UPDOWN = json_data['list'][i]['UPDOWN']
            FIVE_MINUTE = json_data['list'][i]['FIVE_MINUTE']
            OPEN = json_data['list'][i]['OPEN']
            YESTCLOSE = json_data['list'][i]['YESTCLOSE']
            HIGH = json_data['list'][i]['HIGH']
            LOW = json_data['list'][i]['LOW']
            VOLUME = json_data['list'][i]['VOLUME']
            TURNOVER = json_data['list'][i]['TURNOVER']
            try:
                HS = json_data['list'][i]['HS']
            except:
                HS = ''
    
            try:
                LB = json_data['list'][i]['LB']
            except:
                LB = ''
            WB = json_data['list'][i]['WB']
            ZF = json_data['list'][i]['ZF']
            try:
                PE = json_data['list'][i]['PE']
            except:
                PE = ''
            try:
                MCAP = json_data['list'][i]['MCAP']
            except:
                MCAP = ''
            TCAP = json_data['list'][i]['TCAP']
            MFSUM = json_data['list'][i]['MFSUM']
            MFRATIO2 = json_data['list'][i]['MFRATIO']['MFRATIO2']
            MFRATIO10 = json_data['list'][i]['MFRATIO']['MFRATIO10']
            print(CODE, NAME, PRICE, PERCENT, UPDOWN, FIVE_MINUTE, OPEN, YESTCLOSE, HIGH, LOW, VOLUME, TURNOVER, HS, LB, WB, ZF, PE, MCAP, TCAP, MFSUM, MFRATIO2, MFRATIO10)
            # 4. 保存数据
            csv_writer.writerow([CODE, NAME, PRICE, PERCENT, UPDOWN, FIVE_MINUTE, OPEN, YESTCLOSE, HIGH, LOW, VOLUME, TURNOVER, HS, LB, WB, ZF, PE, MCAP, TCAP, MFSUM, MFRATIO2, MFRATIO10])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    可视化

    from pyecharts.charts import Bar
    from pyecharts import options as opts
    import pandas as pd
    
    
    df = pd.read_csv('网易财经.csv', engine="python", encoding='utf-8')
    x = list(df['名称'].values)
    y = df['成交量'].values.tolist()
    c = (
        Bar()
        .add_xaxis(x[:10])
        .add_yaxis('成交量情况', y[:10])
        .set_global_opts(
            title_opts=opts.TitleOpts(title='成交量图表'),
            datazoom_opts=opts.DataZoomOpts()
        )
    )
    c.render('成交量图表.html')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    尾语 💝

    好了,我的这篇文章写到这里就结束啦!

    有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

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

    请添加图片描述

  • 相关阅读:
    【网络】五中IO模型介绍 + 多路转接中select和poll服务器的简单编写
    Spring5学习笔记02--BeanFactory 与 ApplicationContext 容器实现
    金融口译,口译中金融高频词有哪些
    c# Enumerable<T>的GroupJoin方法和Join的用法和区别
    TCP/IP(二十)TCP 实战抓包分析(四)TCP 第二次握手 SYN、ACK 丢包
    电商通用(四)
    17.RedHat认证-Ansible自动化运维(下)
    2024最新群智能优化算法:人工原生动物优化器(Artificial Protozoa Optimizer ,APO))求解23个函数,MATLAB代码
    MySQL查询为啥慢了?
    122. 买卖股票的最佳时机 II
  • 原文地址:https://blog.csdn.net/weixin_62853513/article/details/126664913