gpt4 book ai didi

python - 使用 PhantomJS 的 Selenium 内存使用失控

转载 作者:IT王子 更新时间:2023-10-29 00:37:41 26 4
gpt4 key购买 nike

我用 Python 编写了一个脚本,它遍历一长串网页并收集数据,使用 Selenium 和 PhantomJS 作为 webdriver(因为我在运行 Linux 的远程终端机器上运行它,并且需要使用 headless浏览器)。对于短期工作,例如它必须迭代几页,没有问题。但是,对于较长的作业,它必须遍历更长的页面列表,每次加载新页面时,我都会看到内存使用量随着时间的推移急剧增加。最终在大约 20 个奇数页之后,脚本由于内存溢出而被终止。

这是我初始化浏览器的方式 -

from selenium import webdriver

url = 'http://someurl.com/'
browser = webdriver.PhantomJS()
browser.get(url)

该页面有下一个按钮,我通过查找“下一步 >”按钮的 xpath 遍历页面 -

next_xpath = "//*[contains(text(), 'Next >')]"
next_link = browser.find_element_by_xpath(next_xpath)
next_link.click()

我尝试通过以下方式清除 PhantomJS 浏览器的 cookie 和缓存 -

browser.get('javascript:localStorage.clear();')
browser.get('javascript:sessionStorage.clear();')
browser.delete_all_cookies()

但是这些都没有对内存使用产生任何影响。当我使用 Firefox 驱动程序时,它在我的本地机器上运行没有任何问题,但应该注意我的本地机器比远程服务器有更多的内存。

如果缺少任何重要信息,我深表歉意。请随时告诉我如何使我的问题更全面。

最佳答案

如果 Headless 浏览器适合您,我想推荐一个解决方案来帮助我解决类似的内存问题。使用 AWS Lamda作为您的服务器,使用并行执行库 xdist和宾果游戏你永远不会遇到内存问题,因为 Lamada 是托管服务,确保将捕获的数据上传到 S3 并清理 lamda 上的临时目录。 (我已经在我的一个项目中实现了它,并且效果很好)

关于python - 使用 PhantomJS 的 Selenium 内存使用失控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42356709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com