Итак, у меня есть парсер, использующий селен, код ниже. Проблема в том, что каждый раз, когда код запускается, кажется, что постоянно появляется новый процесс в соответствии с htop — как процесс chromedriver, так и процесс XVFB, как можно увидеть здесь https://i.imgur.com/hDOLnWs.png. Я запускал функцию пять раз, и было открыто пять XVFB (и 7 хромированных драйверов по какой-то причине). У меня есть display.stop() и driver.close(), которые должны предотвратить это? Мой код часто выдает ошибку, но у меня также есть инструкции остановки/закрытия в исключении, поэтому это не должно влиять на закрытие. Я использую только Python 2.7, если это актуально. Веб-скрейпер работает нормально, за исключением этой проблемы с засорением ОЗУ.
Что происходит?
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())