python - Selenium webdriver 在循环中吃掉所有内存

标签 python linux selenium-webdriver debian phantomjs

我对进程和内存使用有疑问。我使用带有 PhantomJS 的 selenium webdriver 创建了一个脚本来解析一些网页。该脚本运行良好,但我的代码需要一些优化。

我启动脚本,片刻之后,我的内存已满,因为我有很多 phantomjs 进程。

如何解决这个问题?我的代码:

服务器.py

from selenium import webdriver
import radio
import urllib2
class Server(object):
    running = False
    radio_dir = "db/radio.txt"
    def __init__(self):
        """Choose browser from selenium webdrivers"""
        self.browser2 = webdriver.PhantomJS()
        self.r = radio.RadioParser(self.browser2)
        self.running = True
    def loop(self):
        """main server loop"""
        while self.running:
            radio_str = self.r.parse()
            self.save(self.radio_dir, radiozet_str)
            time.sleep(30)
    def save(self, location, string):
        """Put location and string to override db files"""
        try:
            file = open(location, 'w')
            file.write(string)
        except IOError:
            print "IOError"
        finally:
            file.close()

if __name__ == "__main__":
    s = Server()
    s.loop()

和 radio.py

class RadioParser(object):
    url = "http://www.radiourl/index.html"
    def __init__(self, browser):
        self.driver = browser
    def parse(self):
        self.driver.get(self.url)
        song = (self.driver.find_element_by_class_name("artist").text +u" - " +
                self.driver.find_element_by_class_name("album").text)
        print song
        return str(song)

最佳答案

你应该关闭你的 webdriver,使用

self.driver.quit()    

关于python - Selenium webdriver 在循环中吃掉所有内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25253423/

相关文章:

selenium - 如何通过Selenium-webdriver和Java从剪贴板粘贴文本?

python - 如何计算一个值到一定的小数位?

C 代码在 Linux 编译器中无法运行

linux - Linux 发行版中的 boost 版本

javascript - 使用 chrome 80 和 chromedriver v80 时,您的连接不是私密的

java - 错误:The method elementToBeClickable(By) in the type ExpectedConditions is not applicable for the arguments (WebElement)

python - Flask 应用程序需要很长时间才能响应,此时浏览器连接会被重置

python - 使用太多运算符验证后缀

python - NetworkX 有向图,无权值和自弧

linux - 对目录中的文件使用 rm