Я хотел загрузить исторические данные в Интернете: https://www.noblebank.pl/tabele-kursow-walut#dewizy
Я совершенно новичок в python, но мне удалось добраться до этого места:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import time
driver = webdriver.Chrome()
driver.maximize_window()
wait = WebDriverWait(driver, 10)
url = 'https://www.noblebank.pl/tabele-kursow-walut#dewizy'
dates = ['27 lipca 2007', '7 września 2007']
driver.get(url)
#driver.execute_script("arguments[0].click();", start_date)
for date in dates:
print(f'\n{date}\n')
date_picker = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".datepicker-foreign")))
date_picker.clear()
date_picker.send_keys(date)
date_picker.send_keys(Keys.ENTER)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".datepicker-foreign")))
soup = BeautifulSoup(driver.page_source, 'lxml')
div = soup.find('div' , {'id': 'dewizy'})
print(div)
table = div.find('table', {})
print('##################################################################' + date)
print(table)
print('############################# Rows ###############################'+ date)
for tr in table.find_all('tr'):
row = [td.get_text(strip=True) for td in tr.find_all('td')]
print(row)
Но по какой-то причине два результата совпадают. Я ввел тогда sleep (10), но тогда не вся таблица анализируется. Особенно по второму результату, количество записей не является полным ...
Очень ценю любой совет. Всего наилучшего, Марцин