Я построил webscraper с использованием python и selenium с помощью geckodriver, в настоящее время он работает в экземпляре EC2 по расписанию crontab.
Моя проблема в том, что для завершения загрузки требуется более 5 минут, и я хочуиспользуйте функции lamda, чтобы запустить мой скребок, но они позволяют только 5 минут работы.
Так что у меня есть код, подобный этому.
from selenium import webdriver
def start_browser(url):
browser = webdriver.Firefox( executable_path="./geckodriver")
executable_path="./geckodriver")
browser.get(url)
return browser
def log_in(user, pass, user_elem, pass_elem, login_elem, browser):
user_elem.click().send_keys(user)
pass_elem.click().send_keys(pass)
login_elem.click()
return browser
def nav_to_data(browser, data_elem)
data_elem.click()
return browser
def find_data(browser, data_table)
data_links = data_table.find_elements_by_tag_name("tr")
return data_links, browser
Я думаю, что эти функции могут быть запущенына лямбда-функциях, передающих друг другу экземпляр браузера / веб-драйвера?
Часть, с которой я борюсь, - это циклическое прохождение данных и ожидание завершения всех загрузок, это займет больше 5 минут.
Есть ли что-нибудь вокруг этого?
def download_data(browser, link)
link.click()
time.sleep(2)
download_elem = browser.find_element_by_id("download_xls_file")
download_path = download_elem.click()
return download_path
# THIS TAKES LONGER THAN 5 mins
download_paths = []
for link in data_links:
download = download_data(browser, link) # clicks a link to a new page wdownload button and returns path to the .xls file
download_paths.append(download)
upload_data()