【问题标题】:How to Create Non-Stop Loop to skip Error: Selenium.common.exceptions.WebDriverException Selenium Python如何创建不间断循环以跳过错误:Selenium.common.exceptions.WebDriverException Selenium Python
【发布时间】:2022-11-08 15:46:30
【问题描述】:

我创建了一个 Python Selenium 脚本来过滤掉具有特定元素的 URL。几乎一切工作正常。但是我不断收到一些无法解决的异常,在这些异常之后,我的脚本停止了:

selenium.common.exceptions.WebDriverException: Message: unknown error: net::ERR_NAME_NOT_RESOLVED

selenium.common.exceptions.WebDriverException: Message: unknown error: net::ERR_CONNECTION_TIMED_OUT

我试图创建循环。这些循环适用于其他异常,例如 NoSuchElement Exception 或任何其他异常,但问题在于 WebDriverException。我无法解决这个问题。我还在循环中添加了“继续”,但它也失败了。 我正在从 CSV 文件中读取 URL 列表。

这是我的代码:

from logging import exception
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import WebDriverException
import time
from fake_useragent import UserAgent
import csv
import selenium.common.exceptions

options = Options()
ua = UserAgent()
userAgent = ua.random
options.add_argument(f'user-agent={userAgent}')
options.add_argument("--headless")

def csv_url_reader(url_obj):
    reader = csv.DictReader(url_obj, delimiter=',')
    for line in reader:
        rawUrls = line["URL"]
        print(rawUrls)

        chromedriver = ("chromedriver")

        driver = webdriver.Chrome(chromedriver, options=options)
        driver.set_window_size(1920, 1080)
        driver.get(rawUrls)
        driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
         
            
        
                  

        try:
            name = driver.find_element(By.ID, 'author')
            email = driver.find_element(By.ID, 'email')
            
            print("PASSED, ALL REQUIRED ELEMENTS FOUND")
            
            filterAll = driver.current_url
            with open("HAS_ALL_ELEMENTS.txt", "a") as r:
                print(filterAll, file=r)
        except WebDriverException or NoSuchElementException or Exception:   
        
                       
            #print('Exception:',exception)
            print("NONE OF THE ELEMENTS FOUND, ERROR!")
            nothingFound = driver.current_url
            with open("NO_ELEMENTS.txt", "a") as n:
                print(nothingFound, file=n)
        continue          
           
        
         
                    
if __name__ == "__main__":
    with open ("RAW_URLs.csv") as url_obj:
        reader = csv.reader(url_obj)
        csv_url_reader(url_obj)                    

实际上,我想创建不可阻挡的脚本。如果有任何异常,它应该跳过该 URL 并切换到另一个。脚本应该继续运行。我在 Stack Overflow 上尝试了许多可用的解决方案,但没有一个对我有用。

【问题讨论】:

    标签: python selenium loops


    【解决方案1】:

    我猜 WebDriverException 来自driver.get(rawUrls) 行,将该行移到try except 块中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多