937135952 发表于 2023-2-15 13:55:21

关于爬虫'Connection aborted.'的报错


    # 获取全部标签页
    window = driver.window_handles
    # 将激活标签页设置为最新的一项(按自己业务改)
    time.sleep(1)
    driver.switch_to.window(window.pop())
    print("11")
    time.sleep(1)
    #获取当前页面的url
    currenturl = driver.current_url
    print(currenturl)
ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
请教大佬们这行代码报了这个错是什么原因?应该怎么修改?之前都可以运行的。

完整代码def get_guangfa():
    # #这个是一个用来控制chrome以无界面模式打开的浏览器
    # #创建一个参数对象,用来控制chrome以无界面的方式打开
    # chrome_options = Options()
    # #后面的两个是固定写法 必须这么写
    # chrome_options.add_argument('--headless')
    # chrome_options.add_argument('--disable-gpu')
    # #驱动路径 谷歌的驱动存放路径
    # path = 'chromedriver\\chromedriver.exe'
    # #创建浏览器对象
    # driver = webdriver.Chrome(executable_path=path,chrome_options=chrome_options)

    s = requests.Session()
   
    fb = webdriver.FirefoxProfile.DEFAULT_PREFERENCES
    # op = webdriver.FirefoxOptions()
    # op.set_preference({'user-data-dir':''})
    c = webdriver.ChromeOptions()
    c.add_argument('--user-data-dir=D:/AutomationProfile')
    c.add_argument('--headless')
    # c.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36')
    driver = webdriver.Chrome()
   
    driver.get('https://rd.gfqh.cn/RDInformation/menu/235')
   
    time.sleep(5)
    #点击模块
    #div.login-modal 如果有好多分支,需要加.login-modal来区别一下,没有的话就直接div,一直到div.form-button-login为登录的同级
    #driver.find_element(by=By.CSS_SELECTOR,value='body > div.login-modal > div > div.login-common-form > div.form-button > div.form-button-login').click()
    driver.find_element(By.XPATH, '//li').click()
    time.sleep(3)
   
   
    now = datetime.datetime.now()
    now = str(now)
    now=now
    date=now.replace("-","")
   
    open_f=1
    while open_f !=0:   
      try:
            #print(date)
            
            driver.find_element(By.XPATH, f'//div').click()
            #print(date+"2")
            time.sleep(2)
            open_f = 0
            
      except:
            date=int(date)-1
            date=str(date)
   
   

    # 获取全部标签页
    window = driver.window_handles
    # 将激活标签页设置为最新的一项(按自己业务改)
    time.sleep(1)
    driver.switch_to.window(window.pop())
    print("11")
    time.sleep(1)
    #获取当前页面的url
    currenturl = driver.current_url
    print(currenturl)

sfqxx 发表于 2023-5-31 19:07:37

这个错误(`ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))`)可能是由于在网络连接过程中出现问题,可能是服务器关闭连接,也可能是网络问题,或者是浏览器驱动程序的问题。你的代码看起来是在使用 Selenium 和 webdriver 来进行网络爬虫操作,这种问题可能是在与webdriver进行通信的时候出现的。

尝试以下几种解决方法:

1. 检查你的网络连接。 确保你的机器可以稳定地连接到网络,没有任何网络阻塞或临时断开的问题。

2. 更新你的webdriver。 如果你正在使用的webdriver版本过旧,可能会有一些兼容性问题。去webdriver的官方网站,下载并安装最新版本的webdriver。

3. 使用代理服务器。 有时,网络问题可能是由于服务器端的防爬策略导致的。你可以试着使用代理服务器来绕过这个问题。

4. 增加重试机制。 你可以添加一个重试机制,当出现网络错误时,代码会尝试重新连接。

5. 增加延迟。在请求不同的网页时,添加一些延迟,防止被服务器识别为机器人。

以下是使用 Selenium 的 webdriver 时添加重试机制的一个例子:


from selenium import webdriver
from selenium.common.exceptions import WebDriverException
import time

def get_url_with_retry(driver, url, retries=3, delay=5):
    for i in range(retries):
      try:
            driver.get(url)
            return
      except WebDriverException:
            print(f"Failed to load {url}, retrying in {delay} seconds...")
            time.sleep(delay)
    raise WebDriverException(f"Failed to load {url} after {retries} retries")

# 使用这个函数获取url
driver = webdriver.Chrome()
get_url_with_retry(driver, 'https://rd.gfqh.cn/RDInformation/menu/235')

在这个例子中,如果`driver.get(url)`在连接时抛出`WebDriverException`,代码会延迟一段时间后再次尝试。如果在指定次数的重试后仍无法加载页面,那么将会抛出一个异常。
页: [1]
查看完整版本: 关于爬虫'Connection aborted.'的报错