Проблемы с безголовым браузером селена для очистки данных с веб-сайта - PullRequest
0 голосов
/ 31 декабря 2018

Я использую последнюю версию chromedriver 2.45.В настоящее время я создаю программу, которая собирает данные о запасах с веб-сайта.У меня есть список из примерно 3000 акций, поэтому я использовал многопоточность для ускорения своей работы.Кажется, моя программа работает нормально, если я выключаю браузер без заголовка, но когда я переключаю браузер без заголовка в значение true (с целью ускорения работы скрипта), иногда поток застревает при выполнении следующей строки:

 browser.get(url)

Для каждой акции перед запуском вышеуказанного сценария будет запускаться следующий сценарий:

options = Options()    
chrome_prefs = {}
options.experimental_options["prefs"] = chrome_prefs
chrome_prefs["profile.default_content_settings"] = {"images": 2}
chrome_prefs["profile.managed_default_content_settings"] = {"images": 2}
options.add_argument('--headless')
options.add_argument("–no-sandbox")
options.add_argument("--disable-gpu")
options.add_argument("--disable-extensions")
options.add_argument("disable-infobars")
options.add_argument('--disable-useAutomationExtension')
options.Proxy = None 
options.add_argument("–disable-dev-shm-usage")    
options.add_argument('blink-settings=imagesEnabled=false')
browser = webdriver.Chrome(options=options)
browser.minimize_window()

Печально то, что когда он застревает в строке, он не вызывает никаких исключений.Я считаю, что поток пытается получить доступ к URL, но сайт не загружается, поэтому он просто ждет и ждет?Может ли это быть так?Как остановить проблему?Или, может быть, выход - сделать таймер для browser.get(url), скажем, на 10 секунд, если он не получит никаких данных, он снова обновит ссылку и продолжит выполнение сценария?

Есть ли такжекакие-либо способы или настройки, которые я могу ускорить сценарий?И можно ли заставить программу работать в фоновом режиме, когда я запускаю сценарий, поскольку он продолжает появляться (хотя он сокращает себя на секунду позже, но хром-драйвер все еще находится на передней панели ...)

Спасибо заваше время!

...