Code Monkey home page Code Monkey logo

Comments (2)

vyashya12 avatar vyashya12 commented on July 28, 2024 3

Hi there, not so experienced in this but, I believe that get_quote_table is not working and giving list index out of range because it is trying to webscrap from yahoo finance and they recently changed their layout and such. We probably need a major update from the maintainers. I am trying to webscrap from the source so I can share my code once I am done and perhaps we can update the yahoo_fin as well

from yahoo_fin.

techsalvator avatar techsalvator commented on July 28, 2024 1

Following code works with Pandas > 2

def get_quote_table(ticker, dict_result=True, headers={'User-agent': 'Mozilla/5.0'}) -> dict:

    '''Scrapes data elements found on Yahoo Finance's quote page
       of input ticker

       @param: ticker
       @param: dict_result = True
    '''

    site = "https://finance.yahoo.com/quote/" + ticker + "?p=" + ticker

    html = requests.get(site, headers=headers).text

    soup = BeautifulSoup(html, 'lxml')

    # Select the target <ul> and build dicts for each row
    data_dicts = []
    target = soup.find_all("div", {"data-testid": "quote-statistics"})[0].findChildren("li", recursive=True)
    row_dict = {}
    for row in target:
        col_name = row.findChildren("span")[0].text
        col_value = row.findChildren("span")[1].text
        row_dict[col_name] = col_value
        data_dicts.append(row_dict)

    data = pd.DataFrame(data_dicts)

    data = data.drop_duplicates().reset_index(drop=True)

    data = data.transpose()

    data = data.reset_index()

    data.columns = ["attribute", "value"]

    quote_price = pd.DataFrame(["Quote Price", si.get_live_price(ticker)]).transpose()
    quote_price.columns = data.columns.copy()

    data = pd.concat([data, quote_price], ignore_index=True)

    data = data.drop_duplicates().reset_index(drop=True)

    data["value"] = data.value.map(si.force_float)

    if dict_result:
        result = {key: val for key, val in zip(data.attribute, data.value)}
        return result

    return data

from yahoo_fin.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.