簡體   English   中英

從大時間范圍Python中獲取每分鍾股票數據

[英]Grabbing per minute stock data from a large time range Python

所以我試圖在一年的時間間隔內獲取每分鍾的股票數據,我知道 Google Finance API 不再工作,所以我做了一些挖掘,我從一個舊的 github 線程中找到了一些可以找到范圍內的代碼雅虎財經數據5天; 然而,即使我輸入了一個像“1Y”這樣默認為 1 天的關鍵字,它也不再這樣做了。 這是下面的代碼:

import requests
import pandas as pd
import arrow
import datetime
import os

def get_quote_data(symbol='AAPL', data_range='5d', data_interval='1m'):
    res = requests.get('https://query1.finance.yahoo.com/v8/finance/chart/{symbol}?range={data_range}&interval={data_interval}'.format(**locals()))
    data = res.json()
    body = data['chart']['result'][0]    
    dt = datetime.datetime
    dt = pd.Series(map(lambda x: arrow.get(x).datetime.replace(tzinfo=None), body['timestamp']), name='Datetime')
    df = pd.DataFrame(body['indicators']['quote'][0], index=dt)
    dg = pd.DataFrame(body['timestamp'])    
    df = df.loc[:, ('open', 'high', 'low', 'close', 'volume')]
    df.dropna(inplace=True)     #removing NaN rows
    df.columns = ['OPEN', 'HIGH','LOW','CLOSE','VOLUME']    #Renaming columns in pandas

    return df

body['meta']['validRanges']告訴你:

['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']

您正在請求1Y而不是1y 這種差異很重要。

順便說一下,您可以像這樣更輕松地加載時間戳:

pd.to_datetime(body['timestamp'], unit='s')
print('stock ticker: {0}'.format(get_quote_data(symbol='AAPL', data_range='1d', data_interval='1m')))

作品

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM