From d58aadcd1b815bcc9fa4db6e8d089c93b834ad70 Mon Sep 17 00:00:00 2001 From: Anand Taralika <46954145+taralika@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:25:49 -0800 Subject: [PATCH 1/3] Hotfix on top of https://github.com/mariostoev/finviz/pull/202 To fix parsing the `company_details` due to an additional class `text-xl` --- finviz/main_func.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/finviz/main_func.py b/finviz/main_func.py index a39596e..4e19d24 100644 --- a/finviz/main_func.py +++ b/finviz/main_func.py @@ -19,7 +19,6 @@ def get_page(ticker): url=STOCK_URL, payload={"t": ticker}, parse=True ) - def get_stock(ticker): """ Returns a dictionary containing stock data. @@ -32,13 +31,16 @@ def get_stock(ticker): get_page(ticker) page_parsed = STOCK_PAGE[ticker] - title = page_parsed.cssselect('table[class="fullview-title"]')[0] - keys = ["Ticker","Company", "Sector", "Industry", "Country"] - fields = [f.text_content() for f in title.cssselect('a[class="tab-link"]')] - data = dict(zip(keys, fields)) - - company_link = title.cssselect('a[class="tab-link"]')[0].attrib["href"] + title = page_parsed.cssselect('div[class="fv-container py-2.5"]')[0] + data = {} + data["Ticker"] = title.cssselect('h1[class="js-recent-quote-ticker quote-header_ticker-wrapper_ticker"]')[0].text_content().strip() + company_details = title.cssselect('h2[class="quote-header_ticker-wrapper_company text-xl"]')[0] + data["Company"] = company_details.text_content().strip() + company_link = company_details.cssselect('a[class="tab-link block truncate"]')[0].attrib["href"] data["Website"] = company_link if company_link.startswith("http") else None + keys = ["Sector", "Industry", "Country", "Exchange"] + fields = [f.text_content() for f in title.cssselect('a[class="tab-link"]')] + data.update(dict(zip(keys, fields))) all_rows = [ row.xpath("td//text()") From 63c64321df3dd1daff2a392d5d82f492d7837484 Mon Sep 17 00:00:00 2001 From: Anand Taralika <46954145+taralika@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:27:11 -0800 Subject: [PATCH 2/3] Fix the newline --- finviz/main_func.py | 1 + 1 file changed, 1 insertion(+) diff --git a/finviz/main_func.py b/finviz/main_func.py index 4e19d24..b9aef88 100644 --- a/finviz/main_func.py +++ b/finviz/main_func.py @@ -19,6 +19,7 @@ def get_page(ticker): url=STOCK_URL, payload={"t": ticker}, parse=True ) + def get_stock(ticker): """ Returns a dictionary containing stock data. From 7092ef9fca52facc5eace95e229b2bb0a04dd36d Mon Sep 17 00:00:00 2001 From: Anand Taralika Date: Thu, 23 Nov 2023 07:53:55 -0800 Subject: [PATCH 3/3] Handle cases where `text-xl` may not be present --- finviz/main_func.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/finviz/main_func.py b/finviz/main_func.py index b9aef88..320b13d 100644 --- a/finviz/main_func.py +++ b/finviz/main_func.py @@ -35,7 +35,10 @@ def get_stock(ticker): title = page_parsed.cssselect('div[class="fv-container py-2.5"]')[0] data = {} data["Ticker"] = title.cssselect('h1[class="js-recent-quote-ticker quote-header_ticker-wrapper_ticker"]')[0].text_content().strip() - company_details = title.cssselect('h2[class="quote-header_ticker-wrapper_company text-xl"]')[0] + try: + company_details = title.cssselect('h2[class="quote-header_ticker-wrapper_company text-xl"]')[0] + except IndexError: + company_details = title.cssselect('h2[class="quote-header_ticker-wrapper_company"]')[0] data["Company"] = company_details.text_content().strip() company_link = company_details.cssselect('a[class="tab-link block truncate"]')[0].attrib["href"] data["Website"] = company_link if company_link.startswith("http") else None