atreadw1492 / yahoo_fin

Scrape stock price history from new (Spring 2017) Yahoo Finance layout
MIT License
292 stars 125 forks source link

Add Event Data #2

Closed taktikal17 closed 3 years ago

taktikal17 commented 5 years ago

Thanks.

def get_events(ticker, start_date = None, end_date = None, index_as_date = True):
    '''Downloads historical event data into a pandas data frame 

       @param: ticker
       @param: start_date = None
       @param: end_date = None
       @param: index_as_date = True
    '''
    site = build_url(ticker , start_date , end_date)
    resp = requests.get(site)
    html = resp.content
    html = html.decode()

    start = html.index("eventsData")
    end = html.index("ThemeStore")

    needed = html[start:end]
    needed = needed.strip('"eventsData":')
    needed = needed.strip("""}]},''""")
    needed = needed + "}]"

    temp = loads(needed)
    result = json_normalize(temp)

    # fix date field
    result['date'] = result['date'].map(lambda x: pd.datetime.fromtimestamp(x).date())

    result['ticker'] = ticker.upper()

    result = result[['ticker', 'date', 'type', 'data']]
    # Unused: 'amount', 'splitRatio', 'numerator', 'denominator'

    result = result.reset_index(drop = True)

    if index_as_date:
        result.index = result.date.copy()
        result = result.sort_values("date")
        del result["date"]
    return result
atreadw1492 commented 3 years ago

Splits and dividends event data were added in version 0.8.6