前言
以前喜欢看一些赌神电影,心想要是我有那么厉害的本领就好了,既能赚钱又能装X,O(∩_∩)O哈哈~ ,今天给大家带来一起股票网站数据可视化教程,好好看好好学,万一赚钱了,可别忘了我哦~~~
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、运行结果
博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!