利用Python?爬取股票實(shí)時(shí)數(shù)據(jù)詳情
東方財(cái)富網(wǎng)地址如下:
http://quote.eastmoney.com/center/gridlist.html#hs_a_board

我們通過(guò)點(diǎn)擊該網(wǎng)站的下一頁(yè)發(fā)現(xiàn),網(wǎng)頁(yè)內(nèi)容有變化,但是網(wǎng)站的 URL 卻不變,也就是說(shuō)這里使用了 Ajax 技術(shù),動(dòng)態(tài)從服務(wù)器拉取數(shù)據(jù),這種方式的好處是可以在不重新加載整幅網(wǎng)頁(yè)的情況下更新部分?jǐn)?shù)據(jù),減輕網(wǎng)絡(luò)負(fù)荷,加快頁(yè)面加載速度。
我們通過(guò) F12 來(lái)查看網(wǎng)絡(luò)請(qǐng)求情況,可以很容易的發(fā)現(xiàn),網(wǎng)頁(yè)上的數(shù)據(jù)都是通過(guò)如下地址請(qǐng)求的
http://38.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112409036039385296142_1658838397275&pn=3&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&wbp2u=|0|0|0|web&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1658838404848

接下來(lái)我們多請(qǐng)求幾次,來(lái)觀察該地址的變化情況,發(fā)現(xiàn)其中的pn參數(shù)代表這頁(yè)數(shù),于是,我們可以通過(guò)修改&pn=后面的數(shù)字來(lái)訪問(wèn)不同頁(yè)面對(duì)應(yīng)的數(shù)據(jù)
import requests json_url = "http://48.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112402508937289440778_1658838703304&pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&wbp2u=|0|0|0|web&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1658838703305" res = requests.get(json_url)
數(shù)據(jù)處理 接下來(lái)我們觀察返回的數(shù)據(jù),可以看出數(shù)據(jù)并不是標(biāo)準(zhǔn)的 json 數(shù)據(jù)

于是我們先進(jìn)行 json 化:
result = res.text.split("jQuery112402508937289440778_1658838703304")[1].split("(")[1].split(");")[0]
result_json = json.loads(result)
result_jsonOutput:

返回各參數(shù)對(duì)應(yīng)含義:
- f2:最新價(jià)
- f3:漲跌幅
- f4:漲跌額
- f5:成交量(手)
- f6:成交額
- f7:振幅
- f8:換手率
- f9:市盈率
- f10:量比
- f12:股票代碼
- f14:股票名稱(chēng)
- f15:最高
- f16:最低
- f17:今開(kāi)
- f18:昨收
- f22:市凈率
先準(zhǔn)備一個(gè)存儲(chǔ)函數(shù)
def save_data(data, date):
if not os.path.exists(r'stock_data_%s.csv' % date):
with open("stock_data_%s.csv" % date, "a+", encoding='utf-8') as f:
f.write("股票代碼,股票名稱(chēng),最新價(jià),漲跌幅,漲跌額,成交量(手),成交額,振幅,換手率,市盈率,量比,最高,最低,今開(kāi),昨收,市凈率\n")
for i in data:
Code = i["f12"]
Name = i["f14"]
Close = i['f2']
ChangePercent = i["f3"]
Change = i['f4']
Volume = i['f5']
Amount = i['f6']
Amplitude = i['f7']
TurnoverRate = i['f8']
PERation = i['f9']
VolumeRate = i['f10']
Hign = i['f15']
Low = i['f16']
Open = i['f17']
PreviousClose = i['f18']
PB = i['f22']
row = '{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}'.format(
Code,Name,Close,ChangePercent,Change,Volume,Amount,Amplitude,
TurnoverRate,PERation,VolumeRate,Hign,Low,Open,PreviousClose,PB)
f.write(row)
f.write('\n')
else:
...然后再把前面處理好的 json 數(shù)據(jù)傳入:
stock_data = result_json['data']['diff'] save_data(stock_data, '2022-07-28')
這樣我們就得到了第一頁(yè)的股票數(shù)據(jù):

最后我們只需要循環(huán)抓取所有網(wǎng)頁(yè)即可:
for i in range(1, 5):
print("抓取網(wǎng)頁(yè)%s" % str(i))
url = "http://48.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112402508937289440778_1658838703304&pn=%s&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&wbp2u=|0|0|0|web&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1658838703305" % str(i)
res = requests.get(json_url)
result = res.text.split("jQuery112402508937289440778_1658838703304")[1].split("(")[1].split(");")[0]
result_json = json.loads(result)
stock_data = result_json['data']['diff']
save_data(stock_data, '2022-07-28')這樣我們就完成了整個(gè)股票數(shù)據(jù)的抓取,
到此這篇關(guān)于利用Python 爬取股票實(shí)時(shí)數(shù)據(jù)詳情的文章就介紹到這了,更多相關(guān) Python 爬取股票數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 使用socket傳輸圖片視頻等文件的實(shí)現(xiàn)方式
這篇文章主要介紹了python 使用socket傳輸圖片視頻等文件的實(shí)現(xiàn)方式,本文給出了實(shí)例代碼,需要的朋友可以參考下2019-08-08
使用python 獲取進(jìn)程pid號(hào)的方法
這篇文章主要介紹了使用python 獲取進(jìn)程pid號(hào)的方法,需要的朋友可以參考下2014-03-03
scrapy框架中用ssh連接遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)
本文主要介紹了scrapy?框架中用ssh連接遠(yuǎn)程服務(wù)器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
python爬蟲(chóng)框架Scrapy基本應(yīng)用學(xué)習(xí)教程
這篇文章主要為大家介紹了python爬蟲(chóng)框架Scrapy的基本應(yīng)用學(xué)習(xí)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
Python Flask框架實(shí)現(xiàn)簡(jiǎn)單加法工具過(guò)程解析
這篇文章主要介紹了Python Flask框架實(shí)現(xiàn)簡(jiǎn)單加法工具過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

