OSError:[Errno 24]打开的文件太多

2024-05-08 19:30:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python和selenium来抓取一个充满文本文件的网站(作为URL),然后使用请求来获取这些txt文件。在

我使用的代码如下:

r = requests.get(link,cookies=cookies)

    # Checking for a successful connection to the server.
    if r.status_code == 200:
        print("Downloading data for time %d, altitude %d" %(counter1, altitude) ) 
        data = r.text # Extracting the text from the file online
        file_name = os.path.join(path,fileName)  
        with open(file_name, 'w') as w:
            w.write(data)
        w.closed


    # Closing browser
    browser.close()

大约有900多个文件需要下载,但是在每250次下载/请求之后,脚本将以错误终止

错误。[错误编号24]打开的文件太多。在

我已经确认正在写入的文件已关闭。selenium也是如此,在每个文本文件被下载后,chromedriver关闭,循环移动到下一个URL。有其他人遇到过这种情况吗?如果有,你做了什么来修复它?在


Tags: 文件thepathtextnamebrowserurlfor
1条回答
网友
1楼 · 发布于 2024-05-08 19:30:07

谢谢你的建议。在

我刚刚意识到浏览器.close()关闭窗口,但不退出chromedriver实例。由于chromedriver的初始化是在提取数据文件的循环中进行的,所以脚本不断地打开chromedriver的新实例,最终使我的内存过载超过200个实例。在

解决这个问题的简单方法是使用webdriver.退出(),这将完全退出webdriver的实例。在

更好的是,与其在每次循环迭代开始时创建新实例,不如在循环结束时使用网络驱动程序.get(URL),它将把当前实例重定向到目标URL。在

相关问题 更多 >