python хромированный драйвер селена без загрузки полной страницы, когда он работал накануне, без изменений в коде - PullRequest
2 голосов
/ 26 февраля 2020

Я использую Selenium на python 3.7.2, чтобы отказаться от 9gag для школьного проекта.

Я работаю chrome 80.0.3987.122 на MacOS. Моя версия chromedriver - та, что предлагается для версии 80. Ниже приведен код использования моего драйвера:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options as c_opt

options = c_opt()
options.headless = True
driver = webdriver.Chrome(executable_path=PATH_TO_DRIVER, chrome_options=options)
driver.get('https://www.9gag.com'))

with open('source.html', 'w') as f:
    f.write(driver.page_source)

вчера все работало нормально. я бы запустил этот код и открыл исходный файл и увидел первые пару статей по 9gag. Начиная с этого утра, мой исходный результат показывает график загрузки c, как если бы он не завершил sh загрузку javascript.

Я знаю, что это не проблема с веб-сайтом, так как я попробовал это снова с безголовым firefox драйвером и безголовым chrome драйвером, и все работало, как и ожидалось.

Драйвер не показывает никаких ошибок, насколько я могу судить.

Мой номер один подозреваемый chrome. Я думаю, может быть, это было как-то обновлено и селен или водитель не знает, как с этим справиться. Мне действительно нужно использовать безголовый, так как без него я вынужден сосредоточиться на окне chrome (это может быть проблема ma c, но все же).

Кто-нибудь сталкивался с таким поведением?


ОБНОВЛЕНИЕ

Я вижу, что моя проблема возникает только при посещении определенных c категорий, например https://9gag.com/funny. поэтому я сохранил вывод оттуда и загрузил его на chrome и получил следующее: click for image

Кажется, что безголовый chrome падает в капчу и не может перейти к загрузить страницу. Как это возможно, что это только начало происходить сейчас, и есть ли что-то, что можно сделать? как мы можем объяснить, что geckodriver для firefox каким-то образом преодолевает это (у него есть свои проблемы, но, по крайней мере, он загружает страницу)?

1 Ответ

0 голосов
/ 27 февраля 2020

Вы можете попробовать добавить эти 2 флага к вашим параметрам. Первый сделает так, чтобы переменная "navigator.webdriver = true" в javascript не отображалась. Сайты могут получить доступ к этой переменной, чтобы проверить, используете ли вы автоматизацию и блокируете ли вы или заставляете ли вы ввести капчу.

Следующим является пользовательский агент. Go вперед и установите его на что-то, что выглядит как le git.

options.add_argument('disable-blink-features=AutomationControlled')
options.add_argument('user-agent=Type user agent here')

Надеюсь, это поможет.

...