Python爬取股票信息,并可视化数据的示例


Posted in Python onSeptember 26, 2020

前言

截止2019年年底我国股票投资者数量为15975.24万户, 如此多的股民热衷于炒股,首先抛开炒股技术不说, 那么多股票数据是不是非常难找, 找到之后是不是看着密密麻麻的数据是不是头都大了?

今天带大家爬取雪球平台的股票数据, 并且实现数据可视化

先看下效果图

Python爬取股票信息,并可视化数据的示例

基本环境配置

  • python 3.6
  • pycharm
  • requests
  • csv
  • time

目标地址

https://xueqiu.com/hq

Python爬取股票信息,并可视化数据的示例

爬虫代码

请求网页

import requests
url = 'https://xueqiu.com/service/v5/stock/screener/quote/list'
response = requests.get(url=url, params=params, headers=headers, cookies=cookies)
html_data = response.json()

解析数据

data_list = html_data['data']['list']
for i in data_list:
 dit = {}
 dit['股票代码'] = i['symbol']
 dit['股票名字'] = i['name']
 dit['当前价'] = i['current']
 dit['涨跌额'] = i['chg']
 dit['涨跌幅/%'] = i['percent']
 dit['年初至今/%'] = i['current_year_percent']
 dit['成交量'] = i['volume']
 dit['成交额'] = i['amount']
 dit['换手率/%'] = i['turnover_rate']
 dit['市盈率TTM'] = i['pe_ttm']
 dit['股息率/%'] = i['dividend_yield']
 dit['市值'] = i['market_capital']
 print(dit)

保存数据

import csv
f = open('股票数据.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['股票代码', '股票名字', '当前价', '涨跌额', '涨跌幅/%', '年初至今/%', '成交量', '成交额', '换手率/%', '市盈率TTM', '股息率/%', '市值'])
csv_writer.writeheader()
csv_writer.writerow(dit)
f.close()

完整代码

import pprint

import requests
import time
import csv

f = open('股票数据.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['股票代码', '股票名称', '当前价', '涨跌额', '涨跌幅/%', '年初至今/%', '成交量', '成交额', '换手率/%', '市盈率TTM', '股息率/%', '市值'])
csv_writer.writeheader()

for page in range(1, 53):
 time.sleep(1)
 url = 'https://xueqiu.com/service/v5/stock/screener/quote/list'
 date = round(time.time()*1000)
 params = {
  'page': '{}'.format(page),
  'size': '30',
  'order': 'desc',
  'order_by': 'amount',
  'exchange': 'CN',
  'market': 'CN',
  'type': 'sha',
  '_': '{}'.format(date),
 }
 cookies = {
  'Cookie': 'acw_tc=2760824216007592794858354eb971860e97492387fac450a734dbb6e89afb; xq_a_token=636e3a77b735ce64db9da253b75cbf49b2518316; xqat=636e3a77b735ce64db9da253b75cbf49b2518316; xq_r_token=91c25a6a9038fa2532dd45b2dd9b573a35e28cfd; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTYwMjY0MzAyMCwiY3RtIjoxNjAwNzU5MjY3OTEwLCJjaWQiOiJkOWQwbjRBWnVwIn0.bengzIpmr0io9f44NJdHuc_6g9EIjtrSlMgnqwKSWVzI4syI_yIH1F-GJfK4bTelWzDirufjWMW9DfDMyMkI75TpJqiwIq8PRsa1bQ7IuCXLbN71ebsiTOGfA5OsWSPQOdVXQA0goqC4yvXLOk5KgC5FQIzZut0N4uaRDLsq7vhmcb8CBw504tCZnbIJTfGGIFIfw7TkwuUCXGY6Q-0mlOG8U4EUTcOCuxN87Ej_OIKnXN8cTSVh7XW6SFxOgU6p3yUXDgvS04rt-nFewpNNqfbGAKk965N-HJ9Mq8E52BRJ3rt_ndYP8yCaeQ6xSsz5P2mNlKwNFe9EQeltim_mDg; u=501600759279498; device_id=24700f9f1986800ab4fcc880530dd0ed; Hm_lvt_1db88642e346389874251b5a1eded6e3=1600759286; _ga=GA1.2.2049292015.1600759388; _gid=GA1.2.391362708.1600759388; s=du11eogy79; __utma=1.2049292015.1600759388.1600759397.1600759397.1; __utmc=1; __utmz=1.1600759397.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1; __utmb=1.3.10.1600759397; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1600759448'
 }
 headers = {
  'Host': 'xueqiu.com',
  'Pragma': 'no-cache',
  'Referer': 'https://xueqiu.com/hq',
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
 }

 response = requests.get(url=url, params=params, headers=headers, cookies=cookies)
 html_data = response.json()
 data_list = html_data['data']['list']
 for i in data_list:
  dit = {}
  dit['股票代码'] = i['symbol']
  dit['股票名称'] = i['name']
  dit['当前价'] = i['current']
  dit['涨跌额'] = i['chg']
  dit['涨跌幅/%'] = i['percent']
  dit['年初至今/%'] = i['current_year_percent']
  dit['成交量'] = i['volume']
  dit['成交额'] = i['amount']
  dit['换手率/%'] = i['turnover_rate']
  dit['市盈率TTM'] = i['pe_ttm']
  dit['股息率/%'] = i['dividend_yield']
  dit['市值'] = i['market_capital']
  csv_writer.writerow(dit)

  print(dit)

f.close()

Python爬取股票信息,并可视化数据的示例

Python爬取股票信息,并可视化数据的示例

数据分析代码

c = (
 Bar()
  .add_xaxis(list(df2['股票名称'].values))
  .add_yaxis("股票成交量情况", list(df2['成交量'].values))
  .set_global_opts(
  title_opts=opts.TitleOpts(title="成交量图表 - Volume chart"),
  datazoom_opts=opts.DataZoomOpts(),
 )
  .render("data.html")
)

Python爬取股票信息,并可视化数据的示例

以上就是Python爬取股票信息,并可视化数据的示例的详细内容,更多关于Python爬取股票信息的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用python删除nginx缓存文件示例(python文件操作)
Mar 26 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
python添加模块搜索路径方法
Sep 11 Python
python批量替换页眉页脚实例代码
Jan 22 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
python实现银联支付和支付宝支付接入
May 07 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
如何利用python发送邮件
Sep 26 #Python
Python 测试框架unittest和pytest的优劣
Sep 26 #Python
浅析python函数式编程
Sep 26 #Python
python用Configobj模块读取配置文件
Sep 26 #Python
Python内存泄漏和内存溢出的解决方案
Sep 26 #Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 #Python
如何使用Python调整图像大小
Sep 26 #Python
You might like
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
JavaScript 事件系统
2010/07/22 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
jQuery自定义多选下拉框效果
2017/06/19 jQuery
react redux入门示例
2018/04/19 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
vue 数据操作相关总结
2020/12/17 Vue.js
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python3中多线程编程的队列运作示例
2015/04/16 Python
python简单实现刷新智联简历
2016/03/30 Python
python入门教程之识别验证码
2017/03/04 Python
python flask实现分页效果
2017/06/27 Python
对Python 数组的切片操作详解
2018/07/02 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
实习评语
2013/12/16 职场文书
党员公开承诺书内容
2014/05/20 职场文书
自查自纠整改报告
2014/11/06 职场文书
举起手来观后感
2015/06/09 职场文书
锦旗赠语
2015/06/23 职场文书