Selenium python Web刮板阻塞了我的RAM:在display.stop()和driver.close()之后,驱动程序和xvfb显示未关闭

时间:2019-03-09 13:17:24

标签: python selenium selenium-chromedriver xvfb

所以我有一个使用硒的网络刮板,下面的代码。问题在于,每次运行代码时,似乎都按照htop永久出现一个新进程-chromedriver进程和XVFB进程,如此处https://i.imgur.com/hDOLnWs.png所示。我运行了该函数五次,并且打开了五个XVFB(出于某种原因,还有七个chromedriver)。我有一个display.stop()和driver.close()应该防止这种情况发生?我的代码经常抛出错误,但是除了中也有停止/关闭指令,因此这不会影响关闭。如果相关的话,我只会运行python 2.7。除此RAM堵塞问题外,网页抓取工具工作正常。

这是怎么回事?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup
import time
import json
import traceback
from pyvirtualdisplay import Display

def scrapeBank(bank, return_dict):

    try:
        display = Display(visible=0, size=(800, 600))
        display.start()
        options = webdriver.ChromeOptions()
        options.add_argument('--no-sandbox')
        options.add_argument('--disable-extensions')
        options.add_argument('--headless')
        options.add_argument('--disable-gpu')
        driver = webdriver.Chrome(chrome_options=options)

        [do a bunch of stuff]

        print('Bank Scrape completed')  
        display.stop()
        driver.close()
        return_dict['transactions'] = transactions

    except:
        display.stop()
        driver.close()
        print(traceback.format_exc())

0 个答案:

没有答案