Przeglądanie terminów publikacji zysków giełdowych Yahoo Finance z Selenium

Nov 19 2020

Chciałbym pobrać wszystkie informacje o firmie z sekcji „Symbol”, „Nazwa” i „Zarobki na telefon” na następującej stronie: https://finance.yahoo.com/calendar/earnings

Chciałbym również, aby selen przeszedł do najbliższej dostępnej daty zarobków i uzyskał te same informacje, co powyżej. Na przykład dzisiaj jest 18 listopada, więc chciałbym pobrać te same informacje z 19 listopada.

Wypróbowałem kilka sposobów, aby to zrobić z selenem, ale nie mogę.

Dziękuję za wszelką pomoc!

Odpowiedzi

DMart Nov 19 2020 at 05:51

Na początek adres URL przyjmuje parametry daty:

https://finance.yahoo.com/calendar/earnings?day=2020-11-19

Więc musisz skonstruować ten adres URL jako taki:

import datetime
tomorrow = (datetime.date.today() + datetime.timedelta(days=1)).isoformat() #get tomorrow in iso format as needed
url = "https://finance.yahoo.com/calendar/earnings?day="+tomorrow
print ("url: " + url)

następnie musisz pobrać elementy potrzebne do uzyskania danych. Na przykład:

driver.find_element_by_xpath("//*[@id='cal-res-table']//table")

Stamtąd zobacz pracę z tabelami w selenie tutaj: https://stackoverflow.com/a/32096039/1387701 i tu: https://www.techbeamers.com/handling-html-tables-selenium-webdriver/

Ale będziesz chciał użyć find_elements, aby znaleźć wiersze, a następnie wybierz stamtąd potrzebne td.