<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何用Python獲取實時的股票數(shù)據(jù)?

          共 6712字,需瀏覽 14分鐘

           ·

          2021-09-17 16:23

          先上個展示圖


          股票代碼為 600519 的股票 1 分鐘數(shù)據(jù)

          代碼展示

          獲取當(dāng)日分鐘線數(shù)據(jù)

          from urllib.parse import urlencodeimport pandas as pdimport requests

          def gen_secid(rawcode: str) -> str: ''' 生成東方財富專用的secid
          Parameters ---------- rawcode : 6 位股票代碼
          Return ------ str: 指定格式的字符串
          ''' # 滬市指數(shù) if rawcode[:3] == '000': return f'1.{rawcode}' # 深證指數(shù) 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線數(shù)據(jù)
          Parameters ---------- code : 6 位股票代碼 beg: 開始日期 例如 20200101 end: 結(jié)束日期 例如 20200201 klt: k線間距 默認為 101 即日k klt:1 1 分鐘 klt:5 5 分鐘 klt:101 日 klt:102 周 fqt: 復(fù)權(quán)方式 不復(fù)權(quán) : 0 前復(fù)權(quán) : 1 后復(fù)權(quán) : 2 Return ------ DateFrame : 包含股票k線數(shù)據(jù) ''' 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' # 根據(jù)股票代碼、開始日期、結(jié)束日期獲取指定股票代碼指定日期區(qū)間的k線數(shù)據(jù) df = get_k_history(code) # 保存k線數(shù)據(jù)到表格里面 df.to_csv(f'{code}.csv', encoding='utf-8-sig', index=None) print(f'股票代碼:{code} 的 k線數(shù)據(jù)已保存到代碼目錄下的 {code}.csv 文件中')

          獲取當(dāng)日分鐘線數(shù)據(jù)(每分鐘運行一次,直到收盤)

          from urllib.parse import urlencodeimport pandas as pdimport requestsimport time

          def gen_secid(rawcode: str) -> str: ''' 生成東方財富專用的secid
          Parameters ---------- rawcode : 6 位股票代碼
          Return ------ str: 指定格式的字符串
          ''' # 滬市指數(shù) if rawcode[:3] == '000': return f'1.{rawcode}' # 深證指數(shù) 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線數(shù)據(jù)
          Parameters ---------- code : 6 位股票代碼 beg: 開始日期 例如 20200101 end: 結(jié)束日期 例如 20200201 klt: k線間距 默認為 101 即日k klt:1 1 分鐘 klt:5 5 分鐘 klt:101 日 klt:102 周 fqt: 復(fù)權(quán)方式 不復(fù)權(quán) : 0 前復(fù)權(quán) : 1 后復(fù)權(quán) : 2 Return ------ DateFrame : 包含股票k線數(shù)據(jù) ''' 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__": # 重復(fù) 1000 次 for _ in range(1000): # 股票代碼 code = '600519' # 根據(jù)股票代碼、開始日期、結(jié)束日期獲取指定股票代碼指定日期區(qū)間的k線數(shù)據(jù) df = get_k_history(code) # 保存k線數(shù)據(jù)到表格里面 df.to_csv(f'{code}.csv', encoding='utf-8-sig', index=None) print(f'股票代碼:{code} 的 k線數(shù)據(jù)已保存到代碼目錄下的 {code}.csv 文件中')
          # 240 行說明收盤了,結(jié)束 if len(df) >= 240: print('已收盤') break time.sleep(60)

          運行環(huán)境說明

          Python版本要求

          Python 3

          需要安裝的庫

          pandas
          requests

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

          pip install pandas requests

          輸入完畢,按 Enter 鍵執(zhí)行代碼,等待 successfully 出現(xiàn)即可

          原文鏈接:zhihu.com/question/438404653/answer/1794419766

          文章轉(zhuǎn)載:Python編程學(xué)習(xí)圈
          (版權(quán)歸原作者所有,侵刪)

          點擊下方“閱讀原文”查看更多

          瀏覽 109
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人A猛片 | 波多野吉衣AV在线 | 亚洲天天看 | 围产精品久久久久久久久久久久 | 免费电影黄色视频 |