使用爬虫,获取数据分析所有板块数据,并对板块涨幅,成交额最大进行分析
import requests
import jsonpath
import pandas as pd
url = "http://money.finance.sina.com.cn/q/view/newFLJK.php?param=class"
headers = {
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh-CN,zh;q=0.9,en-GB;q=0.8,en-US;q=0.7,en;q=0.6,zh-TW;q=0.5",
"Cache-Control":"max-age=0",
"Connection":"keep-alive",
"Host":"money.finance.sina.com.cn",
"Upgrade-Insecure-Requests":"1",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
}
html = requests.get(url, headers = headers)
import re
a = html.text
a = re.search('{.*}', a, re.DOTALL).group()
aa = eval(a)
aaa = {key:value.split(',') for key, value in aa.items()}
import numpy as np
q = ['bankuai','板块','公司家数','平均价格','涨跌额','涨跌幅','总成交量(手)','总成交额(万元)','领涨股','涨跌幅()','当前价','涨跌额()','公司名称']
df1=pd.DataFrame.from_dict(aaa, orient = 'index',columns= q)
df2 = df1.drop('bankuai',axis=1)
df2
df2.apply(pd.to_numeric, errors='ignore')
df3=df2.sort_values(['涨跌幅'],ascending=False)
df4=df3.iloc[:10] #取前十行信息
df4
import matplotlib.pyplot as plt
df4=df4.apply(pd.to_numeric, errors='ignore')
fig = plt.figure(figsize=(10, 5))
plt.rcParams['font.sans-serif'] = ['SimHei'] #帮助识别中文
p1=plt.bar(df4['板块'],df4['涨跌幅'], width=0.8, bottom=None, align='center', data=df4,color='gray')
plt.plot(df4['板块'],df4['平均价格'],color='gray')
plt.title('涨幅最大的概念板块')
df2=df2.apply(pd.to_numeric, errors='ignore')
df5=df2.sort_values(['总成交额(万元)'],ascending=False)#将数据按降序进行排列
df6=df5.iloc[:10] #取前十行信息
df6
fig = plt.figure(figsize=(10, 5))
plt.plot(df6['板块'],df6['总成交额(万元)'],color='black')
p1=plt.bar(df6['板块'],df6['总成交额(万元)'], width=0.8, bottom=None, align='center', data=df4,color='gray')
plt.title('成交额最大的板块')
plt.show()