使用python來(lái)玩一次股票代碼詳解
準(zhǔn)備工作
我們需要使用這些模塊,通過(guò)pip安裝即可。
后續(xù)使用的其它的模塊都是Python自帶的,
不需要安裝,直接導(dǎo)入使用即可。
requests: 爬蟲(chóng)數(shù)據(jù)請(qǐng)求模塊 pyecharts: 數(shù)據(jù)分析 可視化模塊 pandas: 數(shù)據(jù)分析 可視化模塊里面的設(shè)置模塊(圖表樣式)
獲取數(shù)據(jù)部分
爬蟲(chóng)的基本流程
思路分析
采集什么數(shù)據(jù)?怎么采集?
首先我們找到數(shù)據(jù)來(lái)源
代碼實(shí)現(xiàn)
我們想要實(shí)現(xiàn)通過(guò)爬蟲(chóng)獲取到數(shù)據(jù),正常情況下有幾個(gè)步驟:
發(fā)送請(qǐng)求獲取數(shù)據(jù)解析數(shù)據(jù)保存數(shù)據(jù)
接下來(lái)我們來(lái)看代碼 代碼展示
導(dǎo)入需要使用的模塊
import requests # 數(shù)據(jù)請(qǐng)求模塊 import csv # 表格模塊
發(fā)送請(qǐng)求
通過(guò)response模塊來(lái)訪問(wèn)需要獲取數(shù)據(jù)的地址
url = 'https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz'
requests.get(url=url)需要使用 cookie 來(lái)偽裝一下,
cookie代表著用戶(hù)身份信息。
當(dāng)然光cookie是不夠的,
咱們?cè)偌由袭?dāng)前網(wǎng)頁(yè)的 user-agent
偽裝加好之后,咱們就能得到一個(gè)相應(yīng)結(jié)果,
先打印出來(lái)看看。
import requests # 第三方模塊
import csv
# 偽裝
headers = {
# 用戶(hù)身份信息
'cookie': 's=bq119wflib; device_id=90ec0683f24e4d1dd28a383d87fa03c5; xq_a_token=df4b782b118f7f9cabab6989b39a24cb04685f95; xqat=df4b782b118f7f9cabab6989b39a24cb04685f95; xq_r_token=3ae1ada2a33de0f698daa53fb4e1b61edf335952; xq_id_token=evjkfkyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTY3MjE4Njc1MSwiY3RtIjoxNjcwNTAxMjA5MTEyLCJjaWQiOiJkOWQwbjRBWnVwIn0.iuLASkwB6LkAYhG8X8HE-M7AM0n0QUULimW1C4bmkko-wwnPv8YgdakTC1Ju6TPQLjGuvfudhhMqHuSXqiWdOqVIjy_OMEj9L_HScDot-7kn63uc2lZbEdGnjyF3sDrqGBCpocuxTTwuSFuQoQ1lL7ZWLYOcvz2pRgCw64I0zLZ9LogQU8rNP-a_1Nc91V8moONFqPvjjnWD5Lt3JxqcuyJbmb86OpfJZRycnh1Gjnl0Aj1ltGa4sNGSMXoY2iNM8NB56LLIp9dztEwExiRSWlWZifpl9ERTIIpHFBq6L2lSTRKqXKb0V3McmgwQ1X0_MdNdLAZaLZjSIIcQgBU26T8Z4YBZ39dA; u=511670501221348; Hm_lvt_1db88642e346389874251b5a1eded6e3=1667994737,1670480781,1670501222; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1670501922',
# 瀏覽器的基本信息
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
url = 'https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz'
# 1. 發(fā)送請(qǐng)求
response = requests.get(url=url, headers=headers)
print(response)
運(yùn)行后出現(xiàn) <Response [200]>求請(qǐng)求成功,
出現(xiàn)404就是訪問(wèn)不到資源,一般是被反爬了。
所以這時(shí)候我們需要加一個(gè) referer 防盜鏈參數(shù)進(jìn)去
'referer: https://xueqiu.com/hq'
如果加了還不行,
就是自己鏈接有問(wèn)題了。
取數(shù)據(jù)的話 .json 就好了
import requests # 第三方模塊
import csv
# 偽裝
headers = {
# 用戶(hù)身份信息
'cookie': 's=bq119wflib; device_id=90ec0683f24e4d1dd28a383d87fa03c5; xq_a_token=df4b782b118f7f9cabab6989b39a24cb04685f95; xqat=df4b782b118f7f9cabab6989b39a24cb04685f95; xq_r_token=3ae1ada2a33de0f698daa53fb4e1b61edf335952; xq_id_tokendjdjfvj=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTY3MjE4Njc1MSwiY3RtIjoxNjcwNTAxMjA5MTEyLCJjaWQiOiJkOWQwbjRBWnVwIn0.iuLASkwB6LkAYhG8X8HE-M7AM0n0QUULimW1C4bmkko-wwnPv8YgdakTC1Ju6TPQLjGhMqHuSXqiWdOqVIjy_OMEj9L_HScDot-7kn63uc2lZbEdGnjyF3sDrqGBCpocuxTTwuSFuQoQ1lL7ZWLYOcvz2pRgCw64I0zLZ9LogQU8rNP-a_1Nc91V8moONFqPWD5Lt3JxqcuyJbmb86OpfJZRycnh1Gjnl0Aj1ltGa4sNGSMXoY2iNM8NB56LLIp9dztEwExiRSWlWZifpl9ERTIIpHFBq6L2lSTRKqXKb0V3McmgwQ1X0_MdNdLAZaLZjSIIcQgBU26T8Z4YBZ39dA; u=511670501221348; Hm_lvt_1db88642e346389874251b5a1eded6e3=1667994737,1670480781,1670501222; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1670501922',
# 防盜鏈
'referer: https://xueqiu.com/hq'
# 瀏覽器的基本信息
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
url = 'https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz'
# 1. 發(fā)送請(qǐng)求
response = requests.get(url=url, headers=headers)
print(response.json())獲取數(shù)據(jù)
什么是json數(shù)據(jù)?
以 {}/[] 所包裹起來(lái)的數(shù)據(jù) {“”:“”, “”:“”}
除了 .json 還可以通過(guò) .text 和 .content 來(lái)拿到數(shù)據(jù),但是它們獲取到的數(shù)據(jù)是一樣。
.text 獲取到的是字符串,文本內(nèi)容。
.content 取到的是二進(jìn)制數(shù)據(jù),一般是圖片/音頻/視頻內(nèi)容。
json_data = response.json()
解析數(shù)據(jù)
解析數(shù)據(jù)就是提取數(shù)據(jù),把我們想要的數(shù)據(jù)提取出來(lái)。
沒(méi)學(xué)過(guò)字典的小伙伴,可以先學(xué)一下字典。
data_list = json_data['data']['list']
# data_list[0]
# data_list[1]
for i in range(0, len(data_list)):
symbol = data_list[i]['symbol']
name = data_list[i]['name']
current = data_list[i]['current']
chg = data_list[i]['chg']
percent = data_list[i]['percent']
current_year_percent = data_list[i]['current_year_percent']
volume = data_list[i]['volume']
amount = data_list[i]['amount']
turnover_rate = data_list[i]['turnover_rate']
pe_ttm = data_list[i]['pe_ttm']
dividend_yield = data_list[i]['dividend_yield']
market_capital = data_list[i]['market_capital']
print(symbol, name, current, chg, percent, current_year_percent, volume, amount, turnover_rate, pe_ttm, dividend_yield, market_capital)保存數(shù)據(jù)
csv_writer.writerow([symbol, name, current, chg, percent, current_year_percent, volume, amount, turnover_rate, pe_ttm, dividend_yield, market_capital])
數(shù)據(jù)可視化分析
導(dǎo)入需要使用的模塊
import pandas as pd # 做表格數(shù)據(jù)處理模塊 from pyecharts.charts import Bar # 可視化模塊 from pyecharts import options as opts # 可視化模塊里面的設(shè)置模塊(圖表樣式)
讀取數(shù)據(jù)
df = pd.read_csv('股票.csv')
x = list(df['股票名稱(chēng)'].values)
y = list(df['成交量'].values)
c = (
Bar()
.add_xaxis(x[:10])
.add_yaxis("成交額", y[:10])
.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
title_opts=opts.TitleOpts(title="Bar-旋轉(zhuǎn)X軸標(biāo)簽", subtitle="解決標(biāo)簽名字過(guò)長(zhǎng)的問(wèn)題"),
)
.render("成交量圖表.html")到此這篇關(guān)于使用python來(lái)玩一次股票代碼詳解的文章就介紹到這了,更多相關(guān)Python實(shí)戰(zhàn)項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 十個(gè)Python練手的實(shí)戰(zhàn)項(xiàng)目,學(xué)會(huì)這些Python就基本沒(méi)問(wèn)題了(推薦)
- 分享7個(gè) Python 實(shí)戰(zhàn)項(xiàng)目練習(xí)
- Python實(shí)戰(zhàn)項(xiàng)目刮刮樂(lè)的實(shí)現(xiàn)詳解流程
- Python實(shí)戰(zhàn)項(xiàng)目之MySQL tkinter pyinstaller實(shí)現(xiàn)學(xué)生管理系統(tǒng)
- python實(shí)戰(zhàn)項(xiàng)目scrapy管道學(xué)習(xí)爬取在行高手?jǐn)?shù)據(jù)
- python游戲?qū)崙?zhàn)項(xiàng)目之童年經(jīng)典超級(jí)瑪麗
- python游戲的魅力之冒險(xiǎn)島實(shí)戰(zhàn)項(xiàng)目
- Python實(shí)戰(zhàn)項(xiàng)目用PyQt5制作漫畫(huà)臉GUI界面
- Python PyQt5實(shí)戰(zhàn)項(xiàng)目之網(wǎng)速監(jiān)控器的實(shí)現(xiàn)
- python爬蟲(chóng)實(shí)戰(zhàn)項(xiàng)目之爬取pixiv圖片
相關(guān)文章
Java實(shí)現(xiàn)的執(zhí)行python腳本工具類(lèi)示例【使用jython.jar】
這篇文章主要介紹了Java實(shí)現(xiàn)的執(zhí)行python腳本工具類(lèi),結(jié)合實(shí)例形式分析了java使用jython.jar執(zhí)行Python腳本的具體操作技巧,需要的朋友可以參考下2018-03-03
Pytorch中的VGG實(shí)現(xiàn)修改最后一層FC
今天小編就為大家分享一篇Pytorch中的VGG實(shí)現(xiàn)修改最后一層FC,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Python基于execjs運(yùn)行js過(guò)程解析
這篇文章主要介紹了Python基于execjs運(yùn)行js過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Pandas實(shí)現(xiàn)Dataframe的重排和旋轉(zhuǎn)
使用Pandas的pivot方法可以將DF進(jìn)行旋轉(zhuǎn)變換,本文將會(huì)詳細(xì)講解pivot的秘密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06

