Скрипт цикла Selenium, использующий слишком много памяти - PullRequest
0 голосов
/ 14 июня 2019

У меня есть очень большой список URL-адресов, которые я пытаюсь удалить, я перебираю каждый URL-адрес с помощью цикла for.

В конце концов, в элементе x списка мое окно Chrome будет зависать (в окне браузера появляется ошибка «Aw Snap!»). Я понятия не имею, чтобы исправить эту проблему.

Я не могу поделиться своим кодом, но что-то вроде этого:

very_large_url_list = [url1, url2, url3, url4 ...]

for x in very_large_url_list:
    driver.get(x)
    doStuff()

Если я попытаюсь закрыть драйвер на каждой итерации, например:

for x in very_large_url_list:
    driver.get(x)
    doStuff()
    driver.close()

Я бы получил сообщение об ошибке, указав, что идентификатор сессии недействителен. Если я не закрою его, то произойдет утечка памяти, и я не смогу закончить итерацию по списку. Что я могу сделать, чтобы решить эту проблему?

Пожалуйста, дайте мне знать, если я не достаточно ясно, чтобы я мог отредактировать вопрос!

Ответы [ 2 ]

2 голосов
/ 14 июня 2019

Если вы пытаетесь закрывать драйвер на каждой итерации, разве вы не должны этого делать?

for x in very_large_url_list:
    driver = webdriver.Chrome()
    driver.get(x)
    doStuff()
    driver.close()
0 голосов
/ 14 июня 2019

Знаете ли вы, что мы можем открыть URL и без использования браузера? Это часто задаваемый вопрос интервью. Давайте узнаем это.

Давайте сначала выполним несколько шагов:

  1. Откройте браузер.
  2. Нажмите F12.
  3. Переключиться на вкладку консоли.
  4. Введите window.location='https://www.redbus.in' и нажмите клавишу Enter.

Вы заметите, что сайт Redbus загружен.

Это способ загрузки URL без использования таких методов, как get() или navigate(). Вышеупомянутое утверждение называется командой JavaScript. Мы увидим концепции JavaScript позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...