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 urlopen 使用小示例
Sep 06 Python
Python中集合类型(set)学习小结
Jan 28 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Django框架表单操作实例分析
Nov 04 Python
python列表推导式入门学习解析
Dec 02 Python
python实现猜拳游戏
Mar 04 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 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
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
jquery实现动态画圆
2014/12/04 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Python中扩展包的安装方法详解
2017/06/14 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
python实现邮件自动发送
2019/08/10 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
小学后勤管理制度
2014/01/14 职场文书
干部行政关系介绍信
2014/01/17 职场文书
我爱读书演讲稿
2014/05/07 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis