我尝试使用Selenium python从网站下载csv文件,但在实际下载时遇到问题。虽然文件确实下载,但它应该是csv文件,但却显示为不完整的.tmp文件(真实的的csv应该有50,000+行,而.tmp文件只有〈100行)当我从网站手动下载文件时,下载正确完整的csv文件。2代码如下:
chromeDriver = config.get_prop('CHROME_DRIVER_PATH')
chromeOpts = Options()
prefs = {"download.default_directory":
"DESTINATION DIRECTORY (THIS WORKS)",
}
chromeOpts.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(executable_path=chromeDriver, options=chromeOpts)
driver.get("https://oasishub.co/login/?next=/downloads/b2a11100-eac5-4d10-869a-87ba064ede2d")
usernameInput = driver.find_element_by_name("name")
passwordInput = driver.find_element_by_name("password")
usernameInput.send_keys("PROPER USERNAME (LEFT OUT)")
passwordInput.send_keys("PROPER PASSWORD (LEFT OUT)")
driver.find_element_by_xpath('//button[normalize-space()="Login"]').click()
licenseAgreeButton = driver.find_element_by_name("agree")
licenseAgreeButton.click()
driver.find_element_by_xpath("//input[@value='Get the resource']").click()
任何帮助和/或想法将不胜感激!谢谢!
2条答案
按热度按时间iyfjxgzm1#
在代码末尾添加一个等待,这样Selenium浏览器不会立即关闭,
司机,等3万
或者
将chromedriver的变量视为作用域之外,这将使其保持打开状态,直到您关闭它。
qvk1mo1f2#
您可以定义一个等待下载的函数,如本主题所示:python selenium, find out when a download has completed?
如果您在下载后知道下载文件的名称,则可以使用listdir确保此文件位于文件夹中:
Ps:enough_time必须足够长,以避免浪费时间睡觉和足够短,以尽可能接近下载结束,无论哪种方式都不应该太短,以避免运行多次。