手把手教你爬取任意日期全部股票分時數(shù)據(jù)~
回復“書籍”即可獲贈Python從入門到進階共10本電子書
大家好,我是志斌~
在之前志斌寫過一篇東方財富網(wǎng)的股票數(shù)據(jù)爬取文章,詳看,受到很多讀者的喜歡,有的讀者問志斌能不能在寫一個獲取股票分時數(shù)據(jù)的文章,今天志斌給安排上!
01
數(shù)據(jù)采集

首先進入某只股票的詳情頁,然后在右側找到分時成交并點擊查看更多分時成交,然后進入分時數(shù)據(jù)的詳情頁面。

然后我們按F12打開開發(fā)者模式,對分時數(shù)據(jù)的詳情頁面進行觀察后,發(fā)現(xiàn)數(shù)據(jù)存儲在一個get開頭的頁面中,并以JQuery的方式存儲。

我們已經(jīng)發(fā)現(xiàn)單頁數(shù)據(jù)存儲的方式了,現(xiàn)在我們來看一下各頁URL之間的聯(lián)系,如圖:

從圖中,我們可以發(fā)現(xiàn),pageindex的值就是頁數(shù)-1,所以,我們在爬取的時候只需要讓pageindex的值進行循環(huán)即可。
經(jīng)過上面的分析,我們已經(jīng)找全了爬蟲的幾個關鍵參數(shù),現(xiàn)在可以開始構建程序,開始爬取了,核心代碼如下:
import requests
import csv
with open('688103.csv','a',newline='') as f:
writer = csv.writer(f)
writer.writerow(['時間','成交價','手數(shù)'])
for page in range(27):
params = (
('pagesize', '144'),
('ut', '7eea3edcaed734bea9cbfc24409ed989'),
('dpt', 'wzfscj'),
('cb', 'jQuery1124029337350072397084_1631343037828'),
('pageindex', str(page)),
('id', '6009051'),
('sort', '1'),
('ft', '1'),
('code', '688103'),
('market', '1'),
('_', '1631343037827'),
)
response = requests.get('http://push2ex.eastmoney.com/getStockFenShi', headers=headers, params=params, cookies=cookies, verify=False)
for i in eval(response.text[43:-2])['data']['data']:
with open('688103.csv','a',newline='') as f:
writer = csv.writer(f)
if len(str(i['t']))<6:
shi = str(i['t'])[0]
fen = str(i['t'])[1:3]
miao = str(i['t'])[3:]
else:
shi = str(i['t'])[0:2]
fen = str(i['t'])[2:4]
miao = str(i['t'])[4:]
if i['bs'] == 4:
a = '--'
elif i['bs'] == 2:
a = '買入'
elif i['bs'] == 1:
a = '賣出'
02
批量爬取
上面的程序是對單個股票數(shù)據(jù)的分時數(shù)據(jù)進行爬取的,我們如果想對其他股票進行爬取,還要在一個一個進行構造那也太麻煩了。
所以我們需要對程序進行完善,讓它能夠爬取全部的股票分時數(shù)據(jù)。
我們通過對不同股票的頁面數(shù)據(jù)進行觀察發(fā)現(xiàn)每個股票的code是它們自己的股票代碼,并且id是code+‘2’.

好了,經(jīng)過上面的分析,我們也只知道不同股票之間的聯(lián)系了,那我們接下來就可以開始完善程序了,核心代碼如下:
gupiao_code = ['301073']
for code in gupiao_code:
with open(f'{code}.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(['時間', '成交價', '手數(shù)', '買入/賣出'])
try:
for page in range(40):
params = (
('pagesize', '144'),
('ut', '7eea3edcaed734bea9cbfc24409ed989'),
('dpt', 'wzfscj'),
('cb', 'jQuery112408490604705504154_1633509557420'),
('pageindex', str(page)),
('id', '3010732'),
('sort', '1'),
('ft', '1'),
('code', code),
('market', '0'),
('_', '1633509557478'),
)
03
任意時間
有的讀者又說了,能不能把之前的分時數(shù)據(jù)也給爬取下來呢,那必須能啊!
志斌對所有的參數(shù)進行觀察后發(fā)現(xiàn),在cookie里面有關于日期的參數(shù),如下圖:

這就是說當我們改動cookie里面的時間參數(shù)就可以爬取任意時間的股票分時數(shù)據(jù)了,核心代碼如下:
riqi = input('輸入格式如下:xxxx-')
cookies = {
'st_sp': f'{riqi}%2014%3A57%3A10',
}
因為涉及到cookie,所以就只展示關鍵部分的數(shù)據(jù)寫法,其他的大家詳見代碼。
04
小結
1. 本文詳細的介紹了如何從東方財富網(wǎng)上批量獲取股票分時數(shù)據(jù),請讀者仔細閱讀,并加以操作。
2. 東方財富網(wǎng)沒有反爬,但是本著友好的原則,用戶在爬取時最好使用間隔爬取。
3. 本文僅供參考學習,不做商用。
小伙伴們,快快用實踐一下吧!如果在學習過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學習交流群共同探討學習。
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點贊,留言,轉發(fā),轉載,感謝大家的相伴與支持
想加入Python學習群請在后臺回復【入群】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
隨便說一兩句吧~
