如何用Python獲取實時的股票數據?

2021-12-17 Python聯盟
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

連結:

zhihu.com/question/438404653/answer/1794419766

先上個展示圖股票代碼為 600519 的股票 1 分鐘數據代碼展示獲取當日分鐘線數據
from urllib.parse import urlencodeimport pandas as pdimport requests

def gen_secid(rawcode: str) -> str: ''' 生成東方財富專用的secid
Parameters rawcode : 6 位股票代碼
Return - str: 指定格式的字符串
''' if rawcode[:3] == '000': return f'1.{rawcode}' if rawcode[:3] == '399': return f'0.{rawcode}' if rawcode[0] != '6': return f'0.{rawcode}' return f'1.{rawcode}'

def get_k_history(code: str, beg: str = '16000101', end: str = '20500101', klt: int = 1, fqt: int = 1) -> pd.DataFrame: ''' 功能獲取k線數據
Parameters code : 6 位股票代碼 beg: 開始日期 例如 20200101 end: 結束日期 例如 20200201 klt: k線間距 默認為 101 即日k klt:1 1 分鐘 klt:5 5 分鐘 klt:101 日 klt:102 周 fqt: 復權方式 不復權 : 0 前復權 : 1 後復權 : 2 Return - DateFrame : 包含股票k線數據 ''' EastmoneyKlines = { 'f51': '日期', 'f52': '開盤', 'f53': '收盤', 'f54': '最高', 'f55': '最低', 'f56': '成交量', 'f57': '成交額', 'f58': '振幅', 'f59': '漲跌幅', 'f60': '漲跌額', 'f61': '換手率',

} EastmoneyHeaders = { 'Host': '19.push2.eastmoney.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko', 'Accept': '*/*', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Referer': 'http://quote.eastmoney.com/center/gridlist.html', } fields = list(EastmoneyKlines.keys()) columns = list(EastmoneyKlines.values()) fields2 = ",".join(fields) secid = gen_secid(code) params = ( ('fields1', 'f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13'), ('fields2', fields2), ('beg', beg), ('end', end), ('rtntype', '6'), ('secid', secid), ('klt', f'{klt}'), ('fqt', f'{fqt}'), ) params = dict(params) base_url = 'https://push2his.eastmoney.com/api/qt/stock/kline/get' url = base_url+'?'+urlencode(params) json_response: dict = requests.get( url, headers=EastmoneyHeaders).json()
data = json_response.get('data') if data is None: if secid[0] == '0': secid = f'1.{code}' else: secid = f'0.{code}' params['secid'] = secid url = base_url+'?'+urlencode(params) json_response: dict = requests.get( url, headers=EastmoneyHeaders).json() data = json_response.get('data') if data is None: print('股票代碼:', code, '可能有誤') return pd.DataFrame(columns=columns)
klines = data['klines']
rows = [] for _kline in klines:
kline = _kline.split(',') rows.append(kline)
df = pd.DataFrame(rows, columns=columns)
return df

if __name__ == "__main__": code = '600519' df = get_k_history(code) df.to_csv(f'{code}.csv', encoding='utf-8-sig', index=None) print(f'股票代碼:{code} 的 k線數據已保存到代碼目錄下的 {code}.csv 文件中')

獲取當日分鐘線數據(每分鐘運行一次,直到收盤)
from urllib.parse import urlencodeimport pandas as pdimport requestsimport time

def gen_secid(rawcode: str) -> str: ''' 生成東方財富專用的secid
Parameters rawcode : 6 位股票代碼
Return - str: 指定格式的字符串
''' if rawcode[:3] == '000': return f'1.{rawcode}' if rawcode[:3] == '399': return f'0.{rawcode}' if rawcode[0] != '6': return f'0.{rawcode}' return f'1.{rawcode}'

def get_k_history(code: str, beg: str = '16000101', end: str = '20500101', klt: int = 1, fqt: int = 1) -> pd.DataFrame: ''' 功能獲取k線數據
Parameters code : 6 位股票代碼 beg: 開始日期 例如 20200101 end: 結束日期 例如 20200201 klt: k線間距 默認為 101 即日k klt:1 1 分鐘 klt:5 5 分鐘 klt:101 日 klt:102 周 fqt: 復權方式 不復權 : 0 前復權 : 1 後復權 : 2 Return - DateFrame : 包含股票k線數據 ''' EastmoneyKlines = { 'f51': '日期', 'f52': '開盤', 'f53': '收盤', 'f54': '最高', 'f55': '最低', 'f56': '成交量', 'f57': '成交額', 'f58': '振幅', 'f59': '漲跌幅', 'f60': '漲跌額', 'f61': '換手率',

} EastmoneyHeaders = { 'Host': '19.push2.eastmoney.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko', 'Accept': '*/*', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Referer': 'http://quote.eastmoney.com/center/gridlist.html', } fields = list(EastmoneyKlines.keys()) columns = list(EastmoneyKlines.values()) fields2 = ",".join(fields) secid = gen_secid(code) params = ( ('fields1', 'f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13'), ('fields2', fields2), ('beg', beg), ('end', end), ('rtntype', '6'), ('secid', secid), ('klt', f'{klt}'), ('fqt', f'{fqt}'), ) params = dict(params) base_url = 'https://push2his.eastmoney.com/api/qt/stock/kline/get' url = base_url+'?'+urlencode(params) json_response: dict = requests.get( url, headers=EastmoneyHeaders).json()
data = json_response.get('data') if data is None: if secid[0] == '0': secid = f'1.{code}' else: secid = f'0.{code}' params['secid'] = secid url = base_url+'?'+urlencode(params) json_response: dict = requests.get( url, headers=EastmoneyHeaders).json() data = json_response.get('data') if data is None: print('股票代碼:', code, '可能有誤') return pd.DataFrame(columns=columns)
klines = data['klines']
rows = [] for _kline in klines:
kline = _kline.split(',') rows.append(kline)
df = pd.DataFrame(rows, columns=columns)
return df

if __name__ == "__main__": for _ in range(1000): code = '600519' df = get_k_history(code) df.to_csv(f'{code}.csv', encoding='utf-8-sig', index=None) print(f'股票代碼:{code} 的 k線數據已保存到代碼目錄下的 {code}.csv 文件中')
if len(df) >= 240: print('已收盤') break time.sleep(60)

運行環境說明

Python版本要求

Python 3

如果沒有安裝 Python,可以參考這篇安裝教程:

https://zhuanlan.zhihu.com/p/264318820

需要安裝的庫

pandas
requests

庫的安裝方法是:打開 cmd(命令提示符或者其他終端工具),輸入以下代碼:

pip install pandas requests

輸入完畢,按 Enter 鍵執行代碼,等待 successfully 出現即可。

求點讚

相關焦點

  • 使用Python輕鬆獲取股票&基金數據
    Python作為金融領域明星級的分析工具,在數據獲取、清洗、分析、建模上都有全套的解決方案,比如說Pandas就是專門為金融分析開發的庫。這次我們來研究下如何用Python獲取股票&基金數據,用作行業分析。
  • 利用tushare獲取股票數據及實現可視化
    在上周的推文《利用tushare獲取股票數據》中,我們介紹了tushare的安裝以及如何獲取股票交易的數據和數據,今天我們將繼續介紹tushare的用法並實現數據的可視化,一起往下看吧~一、獲取實時分筆數據:get_realtime_quotes()在tushare中,可以使用get_realtime_quotes()實時獲取股票當前報價和成交信息,從而實現實時的監測交易量和價格的變化。
  • Python之Tushare包——獲取股票交易數據
    詳細培訓大綱及報名方式,請點擊文末閱讀原文呦~爬蟲俱樂部曾發布的cntrade命令主要被用來下載中國股票市場中的歷史市場報價,為需要這些金融數據的用戶省了不少事。而今天我們來為大家介紹Python的Tushare包,幫助大家了解如何在Python中輕鬆獲取股票交易數據。
  • 利用tushare獲取股票數據
    想要獲取股票交易數據的你,還在各種交易平臺上機械的點擊滑鼠進行下載嗎?如果你恰好是這種情況,那麼恭喜你,在看完這篇推文以後就可以輕鬆獲取股票交易數據啦~在Stata中,我們可以使用爬蟲俱樂部開發的cnstock和cntrade等命令來輕鬆獲取股票數據,今天我們介紹Python中獲取數據的方法——tushare。
  • Python 與金融數據|股票數據的獲取與可視化
    API接口,獲取歷史股價數據,並將數據以圖表的形式展示出來。pandas_datareaderpandas_datareader庫提供了專門從財經網站獲取金融數據的API接口,可作為量化交易股票數據獲取的另一種途徑,該接口在urllib3庫基礎上實現了以客戶端身份訪問網站的股票數據。
  • 5分鐘學會用Python獲取美股股票數據
    在以前幾篇對股票數據做分析和預測的文章後,很多讀者對如何獲取股票數據很有興趣。下面就介紹下美股的歷史數據獲取api來回饋讀者。美股的歷史數據獲取api眾所周知,Yahoo財經廢掉了他們的歷史數據api,導致許多依賴它的程序也遭遇了危機。但不用怕!新的股票歷史數據引擎來了。
  • 如何用 Python實時監控文件?
    在業務穩定性要求比較高的情況下,運維為能及時發現問題,有時需要對應用程式的日誌進行實時分析,當符合某個條件時就立刻報警,而不是被動等待出問題後去解決
  • python定時獲取天氣數據並自動發送到郵箱
    自動發送郵件,python幾行代碼來搞定!我們說到如何用python來實現自動發送郵件。這篇文章我們就來談談如何獲取天氣數據,並定時將天氣數據發送到指定的郵箱中?它在python內置模塊的基礎上進行了高度的封裝,從而使得python進行網絡請求時,變得人性化,使用Requests可以輕而易舉地完成瀏覽器可有的任何操作。使用它最重要的一個方法就是get方法,它能獲取到所請求頁面的html信息。
  • 用Python做了一個 "盯盤機器人",股票價格實時監控,還能郵件通知你!
    即將走上量化投資交易的你,工欲善其事,必先利其器,將Python作為量化投資交易的首選語言,無疑是最為明智的,餘生很短,請跟我一起用python!思路 在量化交易方面,通過電腦程式自動實現股票盯盤與找到買賣信號,應該是很多人都比較嚮往的吧。但九層之臺,起於累土,千裡之行,始於足下,只有打下堅實的基礎,將各個知識點逐一突破後加以綜合運用,才能構建自己完整的量化交易體系。
  • 用Python構建數據科學Web應用程式
    在本文中,我將向你展示如何使用streamlit python庫快速構建一個簡單的數據驅動web應用程式,只需幾行代碼。作為一名數據科學家或機器學習工程師,能夠部署我們的數據科學項目是很重要的。傳統的使用Django或Flask這樣的框架來部署機器學習模型可能是一項艱巨和/或耗時的任務。
  • 教你用Python做一個「盯盤機器人」,實時監控股票價格並通知你!
    今天就從量化交易最基礎的入門知識點講起,通過Python程序,編寫股票價格實時盯盤的機器人,當股價觸發一定的漲幅條件時,自動發送電子郵件或簡訊通知到投資者,這一場景可運用於平時喜歡炒股,但是沒有時間盯盤的股民朋友。通過該文章的學習,讀者可以掌握對證券(包括股票和基金)實時價格的獲取、電子郵件發送、程序定時運行和程序打包成exe文件等知識點。
  • Python爬取股票數據,如何用python編程賺取第一桶金?
    用戶也可以從中提取出連結,讓Scrapy繼續抓取下一個頁面下面用python用Python來可視化股票數據,比如繪製K線圖,並且探究各項指標的含義和關係最後使用移動平均線方法初探投資策略。數據導入這裡將股票數據存儲在stockData.txt文本文件中,我們使用pandas.read_table()函數將文件數據讀入成DataFrame格式。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    在當今社會,網際網路上充斥著許多有用的數據。我們只需要耐心觀察並添加一些技術手段即可獲得大量有價值的數據。而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?網絡爬蟲,也叫作網絡數據採集,是指通過編程從Web伺服器請求數據(HTML表單),然後解析HTML以提取所需的數據。
  • 用Python也能進軍金融領域?這有一份股票交易策略開發指南
    現在,讓我們先關注在Pandas上,並且用它來分析時間序列數據。這一部分將會解釋你可以怎樣使用Pandas輸入數據,探索和操作數據。在這之上,你還會學到如何對你輸入的數據進行一些常見的金融分析。pandas-datareader 工具包讓你可以從Google,Yahoo! 金融和世界銀行等渠道讀入數據。如果你想要獲得更新版的這項功能所能觸及的數據源列表,可以去看一下文檔。
  • python數據分析案例-數據獲取
    ,在這裡探長將從數據的獲取開始,進而對數據清洗、數據分析及可視化進行案例分析。Part 0 - 項目概覽    數據獲取、數據清洗、數據分析及可視化是數據分析流程的三大步驟,在本次項目中探長將以手機為分析對象,通過多維度的數據分析了解當前手機市場概況;    今天探長將首先從數據分析流程的第一步-數據獲取進行展開,後續會對獲取到的數據進行清洗、分析及可視化。
  • Python入門學習之數據分析實戰獲取數據
    想用一個完整的案例講解Python數據分析的整個流程和基礎知識,實際上以一個數據集為例,數據集是天池上的一個短租數據集,後臺回覆:短租數據集,即可獲得。先來想一下數據分析的流程,第一步獲取數據,因此本節內容就是獲取數據以及對數據的基本操作。
  • 學會用Python結合人工智慧嘗試預測股票,下一個股神就是你!
    股票市場漲漲跌跌,好像毫無規律,但有一些人卻憑藉自己的直覺掌握了一些特殊規律,從而實現在股票上的實現斬獲。現在在人工智慧時代,Python+AI框架,無疑會利用人工智慧優勢可以對股票市場進行特徵學習,抓取比憑藉個人感覺更多的股票數字特徵。本文要介紹的就是利用Python+keras對股票進行時間序列上的數字特徵預測。
  • 一文教你如何用Python預測股票價格
    對數據科學家來說,預測證券市場走勢是一項非常有誘惑力的工作,當然,他們這樣做的目的很大程度上並不是為了獲取物質回報,而是為了挑戰自己。證券市場起起伏伏、變幻莫測,試想一下,如果在這個市場裡存在一些我們或者我們的模型可以學習到的既定模式,讓我們可以打敗那些商科畢業的操盤手,將是多麼美妙。
  • 如何使用Python獲取運營數據之文本文件篇
    使用Python獲取數據,目前主要的方法集中在文本文件、Excel文件、關係型和非關係型資料庫、API、網頁等方面。本文先來給大家分享如何使用Python讀取數據1.使用read、readline、readlines讀取數據Python可以讀取任意格式的文本數據,使用Python讀取文本數據的基本步驟是:1)定義數據文件;
  • 【Python量化】手把手教你用python做股票分析入門
    目前,獲取股票數據的渠道有很多,而且基本上是免費的,比如,行情軟體有同花順、東方財富等,門戶網站有新浪財經、騰訊財經、和訊網等。Python也有不少免費的開源api可以獲取交易行情數據,如pandas自帶的庫,tushare和baostock等。