要精确控制等待文件下载时间和判断文件是否下载完成,可以使用Selenium的WebDriverWait类来等待特定条件的出现或消失,并使用expected_conditions模块中的条件。\n\n首先,使用find_elements_by_方法查找所有的文件下载元素,并将它们的链接存储在一个列表中。然后,使用循环遍历该列表,并依次点击每个链接进行下载。\n\n在点击链接后,可以使用WebDriverWait类来等待文件是否下载完成。通过判断下载目录中是否出现该文件来判断文件是否下载成功。如果文件未下载成功,可以使用time.sleep方法来等待一段时间,然后再次判断文件是否下载成功。\n\n如果文件下载失败超过设定的重试次数,可以选择跳过该文件并继续下一个文件的下载。\n\n下面是一个示例代码,演示了如何实现上述功能:\n\npython\nimport time\nfrom selenium import webdriver\nfrom selenium.webdriver.support.ui import WebDriverWait\nfrom selenium.webdriver.support import expected_conditions as EC\nfrom selenium.webdriver.common.by import By\n\n# 创建一个浏览器实例\ndriver = webdriver.Chrome()\n\n# 设置文件下载路径\ndownload_path = '/path/to/download/folder'\nprefs = {'download.default_directory': download_path}\noptions = webdriver.ChromeOptions()\noptions.add_experimental_option('prefs', prefs)\n\n# 循环爬取\nwhile True:\n # 爬取页面并找到所有文件下载元素\n driver.get('https://example.com')\n download_elements = driver.find_elements_by_css_selector('.download-link')\n\n # 如果没有文件下载元素,则跳出循环\n if len(download_elements) == 0:\n break\n\n # 遍历文件下载元素并依次点击下载\n for element in download_elements:\n link = element.get_attribute('href')\n element.click()\n\n # 等待文件下载完成\n wait = WebDriverWait(driver, 120)\n file_path = download_path + '/filename.ext'\n try:\n wait.until(EC.presence_of_file(file_path))\n print('文件下载成功:', link)\n except:\n print('文件下载失败:', link)\n\n # 重试下载3次\n retries = 3\n while retries > 0:\n time.sleep(10) # 等待10秒后再次判断文件是否下载成功\n if os.path.exists(file_path):\n print('文件下载成功:', link)\n break\n else:\n retries -= 1\n else:\n print('文件下载失败超过重试次数:', link)\n\n\n请注意,上述示例代码仅为演示目的,并未完全测试。您可能需要根据自己的需求进行适当的修改和调整。

Selenium 自动化爬虫:精确控制文件下载时间和判断下载完成

原文地址: https://www.cveoy.top/t/topic/p7Sj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录