#python #performance #selenium
#python #Производительность #selenium
Вопрос:
У меня возникли проблемы со временем выполнения selenium webdriver. На самом деле я открываю массив с 10 URL-адресами и очищаю некоторый контент.
С течением времени, когда selenium открывает четвертый URL-адрес, он становится чрезвычайно медленным … если я позволю задаче продолжаться, она не может быть завершена, python прерывает процесс из-за превышения времени выполнения.
Представьте, что первая очистка URL-адреса занимает 1 минуту, вторая — 1-2 минуты, третья — 4 минуты, …, затем она прерывается.
Мне нужно какое-то решение этой проблемы, я использую ipython notebook 2.7.
PS: Как вы думаете, может ли помочь открытие URL-адреса на разных вкладках?
Редактировать: вот как я создаю браузер:
chromeOptions = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images":2,
"profile.default_content_setting_values.notifications" : 2,}
chromeOptions.add_experimental_option("prefs",prefs)
chromeOptions.add_argument("--window-position=0,0")
browser = webdriver.Chrome(chrome_options=chromeOptions)
Эта задача выполняется в каждом URL-адресе массива:
browser.get(url)
lastHeight = browser.execute_script("return document.body.scrollHeight")
while True:
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
newHeight = browser.execute_script("return document.body.scrollHeight")
if newHeight == lastHeight:
break
lastHeight = newHeight
start = 'Por '
end = ' com'
html_source = browser.page_source
soup = BeautifulSoup(html_source)
cl = soup.find_all('div', attrs={'class': 'cl'})
names = [None] * len(cl)
for i in range(len(cl)):
try: names[i] = re.search('%s(.*)%s' % (start, end), cl[i].text).group(1)
except: continue
photosof = list(set(names))
Ответ №1:
К сожалению, производительность Selenium сильно зависит от времени, она очень быстро снижается. Единственным решением, которое я нашел, было закрыть и снова открыть драйвер.