OSError: [Errno 24] Too many open files

OSError: [Errno 24] Too many open files

我正在使用 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 个奇数之后 downloads/reqests,脚本终止并出现错误

操作系统错误。 [Errno 24] 打开的文件太多。

我已确保正在写入的文件已关闭。 selenium 也是如此,在下载每个文本文件后,chromedriver 关闭,循环移动到下一个 URL。有没有其他人遇到过这个问题,如果遇到过,您是如何解决的?

感谢您的建议。

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

对此的简单修复是使用 webdriver.quit(),这将完全退出 webdriver 的实例。

更好的是,与其在每次循环迭代开始时创建一个新实例,不如在循环结束时使用 webdriver.get(URL),这会将当前实例重定向到目标 URL.