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中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
深入理解Python 代码优化详解
Oct 27 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
python编码总结(编码类型、格式、转码)
Jul 01 Python
django1.11.1 models 数据库同步方法
May 30 Python
Python不使用int()函数把字符串转换为数字的方法
Jul 09 Python
python梯度下降法的简单示例
Aug 31 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
Python 装饰器原理、定义与用法详解
Dec 07 Python
python实现交并比IOU教程
Apr 16 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 日常开发小技巧
2009/09/23 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
豆瓣网的jquery代码实例
2008/06/15 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
Python列表操作方法详解
2020/02/09 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
简历的自我评价
2014/02/03 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
中标通知书
2015/04/17 职场文书
少先队工作总结2015
2015/05/13 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技