Использование безголового режима с Chrome менее эффективно? - PullRequest
0 голосов
/ 09 мая 2020

Я использую селен + красивый суп (использую селен для открытия страниц с большим количеством javascript и использую команду javascript, чтобы превратить его в объект BeautifulSoup) для очистки данных со спортивных сайтов, но по какой-то причине Я не могу использовать безголовый браузер. Когда я реализую безголовый браузер с chromedriver, я не очищаю почти столько данных, сколько когда я позволяю chromedriver открываться и работать. У кого-нибудь была подобная проблема или у кого-нибудь есть предложения?

    def get_bs(self, url, sport_url):
        driver = webdriver.Chrome(executable_path='drivers/chromedriver')
        driver.get(url + sport_url)
        time.sleep(3)

        site = driver.execute_script('return document.documentElement.outerHTML')
        driver.close()
        return BeautifulSoup(site, 'html.parser')

Мой проект очень длинный и состоит из нескольких файлов. Но выше представлена ​​функция, которую я использую для доступа к веб-сайту и преобразования сайта в объект BeautifulSoup, который я затем обрабатываю другой функцией.

Спасибо!

1 Ответ

1 голос
/ 09 мая 2020

На самом деле веб-сайту очень легко обнаружить, что вы используете автоматизацию, с помощью Chrome через переменную navigator.webdriver javascript. В зависимости от версии Chrome, которую вы используете, это будет справедливо только в безголовом режиме. В более поздних версиях они исправили это (и переменная всегда устанавливается при использовании селена).

После перехода на веб-страницу попробуйте запустить:

print(driver.execute_script("return window.navigator.webdriver"))

Если это вернет True, вы, вероятно, ограничены / заблокированы.

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