使用requests-html渲染JS页面时遭遇IOError问题求助
解决requests-html调用render()时的pyppeteer临时目录清理IO错误
嘿,我之前也踩过这个坑!这个报错本质上是pyppeteer在程序退出时,尝试自动清理Chrome临时用户数据目录时出了权限问题,或者目录已经被系统提前删掉了。给你几个亲测有效的解决办法:
手动指定Chrome用户数据目录
调用render()的时候,通过user_data_dir参数指定一个你有权限读写的本地目录,这样pyppeteer就不会使用容易出问题的临时目录了,示例代码:from requests_html import HTMLSession session = HTMLSession() r = session.get("你要爬取的目标URL") # 指定自定义的用户数据目录,路径可以自己改 r.render(user_data_dir="./my_chrome_profile")禁用临时目录自动清理
如果你不想自定义目录,也可以直接关闭pyppeteer的自动清理逻辑,在render()里传递相关参数即可:r.render(kwargs={"cleanup": False})这样程序退出时就不会触发清理操作,自然也就不会报这个错误了。
修复系统权限问题
如果你用的是Windows系统,大概率是Python进程没有删除临时目录的权限。可以试试右键点击Python脚本,选择「以管理员身份运行」,或者检查系统临时目录(一般在C:\Users\你的用户名\AppData\Local\Temp)的读写权限是否对当前用户开放。升级依赖库
这个问题在requests-html和pyppeteer的旧版本里是个常见bug,尝试升级到最新版说不定直接就解决了:pip install --upgrade requests-html pyppeteer
顺便提一句:这个报错其实不会影响页面渲染的结果,它只是在程序退出阶段触发的清理错误,但看着确实闹心,上面的方法应该能帮你搞定。
内容的提问来源于stack exchange,提问作者tony.guo140502
相关产品推荐
相关产品推荐

