我已经用Python编写了一个脚本,它迭代了很长的网页列表并收集数据,使用Selenium和PhantomJS作为webdriver(因为我在运行Linux的远程终端机器上运行它,需要使用无头浏览器)。对于短期工作,例如它必须迭代几页,没有问题。但是,对于较长的作业,它必须遍历更长的页面列表,我看到每次加载新页面时内存使用量会随着时间的推移而显着增加。最终在大约20多页之后,脚本因内存溢出而被终止。
以下是我初始化浏览器的方法 -
from selenium import webdriver
url = 'http://someurl.com/'
browser = webdriver.PhantomJS()
browser.get(url)
页面有下一个按钮,我通过找到'Next>'的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驱动程序时,在我的本地计算机上它没有任何问题,但应该注意我的本地计算机比远程服务器有更多的内存。
如果遗漏任何重要信息,我道歉。请随时告诉我如何使我的问题更全面。