【问题标题】:python: Selenium saves empty filepython:Selenium 保存空文件
【发布时间】:2020-03-18 15:38:00
【问题描述】:

我正在尝试通过单击下载按钮从以下链接下载文件:https://www.investing.com/equities/oil---gas-dev-historical-data

这是我的代码:

from datetime import date
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import ElementClickInterceptedException
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.common.exceptions import TimeoutException

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.preferences.instantApply",True)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")
profile.set_preference("browser.helperApps.alwaysAsk.force",False)
profile.set_preference("browser.download.manager.showWhenStarting",False)
profile.set_preference("browser.download.folderList",0)


driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://www.investing.com/equities/oil---gas-dev-historical-data')

try:
    popup = WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "i[class*='largeBannerCloser']")))
    popup.click()
except TimeoutException as to:
    print(to)

#driver.find_element_by_css_selector("i.popupCloseIcon").click()
driver.find_element_by_css_selector("a[class*='login']").click()
driver.find_element_by_id('loginFormUser_email').send_keys('myemail')
driver.find_element_by_id('loginForm_password').send_keys('pass')
driver.find_element_by_xpath("//div[@id='loginEmailSigning']//following-sibling::a[@class='newButton orange']").click()

driver.find_element_by_id('flatDatePickerCanvasHol').click()
start_date = driver.find_element_by_id('startDate')
start_date.send_keys(Keys.BACKSPACE*10)
start_date.send_keys(date(2014,1,1).strftime("%d/%m/%Y"))
driver.find_element_by_id('applyBtn').click()
#driver.implicitly_wait(30)
driver.find_element_by_css_selector('a.newBtn.LightGray.downloadBlueIcon.js-download-data').click()

但它总是保存空文件?如何避免这种行为?

【问题讨论】:

    标签: python-3.x selenium web-scraping


    【解决方案1】:

    该页面似乎仅导出页面上显示的数据。添加检查以等待表加载。

    更改日期范围后有助于成功下载数据。

    try:
        popup = WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.XPATH, "//div[@id='results_box']//tbody//tr")))
    except TimeoutException as to:
        print(to)
    driver.find_element_by_css_selector('a.newBtn.LightGray.downloadBlueIcon.js-download-data').click()
    

    【讨论】:

      猜你喜欢
      • 2012-10-31
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      相关资源
      最近更新 更多