鱼C论坛

 找回密码
 立即注册
查看: 1977|回复: 1

[已解决]关于爬虫'Connection aborted.'的报错

[复制链接]
发表于 2023-2-15 13:55:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
    # 获取全部标签页
    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[text()="能源化工"]').click()
    time.sleep(3)
    
    
    now = datetime.datetime.now()
    now = str(now)
    now=now[0:10]
    date=now.replace("-","")
    
    open_f=1
    while open_f !=0:    
        try:
            #print(date)
            
            driver.find_element(By.XPATH, f'//div[text()="{date}广发期货能源化工周报汇总"]').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)
最佳答案
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`,代码会延迟一段时间后再次尝试。如果在指定次数的重试后仍无法加载页面,那么将会抛出一个异常。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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`,代码会延迟一段时间后再次尝试。如果在指定次数的重试后仍无法加载页面,那么将会抛出一个异常。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表