Headless Chrome с Selenium некорректно загружает элементы веб-страницы

Я загружаю веб-сайт для веб-скрейпинга с помощью Selenium WebDriver с Python.
Мне нужно загрузить из него таблицу, которая отлично работает, когда не используется headless = True.
Сама таблица загружается, но в этом случае показывает «Результаты не найдены», а в противном случае - извлекает элементы данных.

Я попытался проверить, нормально ли работает код, отключив безголовый режим. Он работает как шарм, каждый раз правильно загружает таблицу целыми элементами. Как только я использую headless, он пропускает данные таблицы.
(Помните, он по-прежнему загружает таблицу и ее заголовки, вместо элементов данных отображается «Результаты не найдены»)
Я также пробовал подделывать голову пользователя с аргументом 'user = какой-то возглавляемый пользователем '
Я также пробовал включать / отключать несколько параметров Chrome, таких как
disable gpu; начать с развернутого экрана; изменить размер экрана; обход прокси
и все остальное, что обычно используется для отладки безголовых параметров Chrome.

Ниже приведен код:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys

service = webdriver.chrome.service.Service(r'C:/Program Files (x86)/SeleniumWrapper/chromedriver.exe')
service.start()
chrome_options = Options()

chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
chrome_options.add_argument("--disable-gpu")
chrome_options.headless = True

driver = webdriver.Remote(service.service_url, desired_capabilities=chrome_options.to_capabilities())

driver.get('https://cambodiantr.gov.kh/index.php?r=searchMeasures/index')

table = driver.find_element_by_xpath('//*[@id="measures-grid"]/table')
all_rows = table.find_elements_by_tag_name('tr')
print(all_rows[0].text)
print(all_rows[1].text)

Полученные результаты:

-Без безголового режима:
| Имя - Применяется - Тип - Срок действия с - Срок действия до |
| Приостановление таможенной очистки импортных товаров может применяться в случае возражения против зарегистрированного знака владельца - Министерство сельского, лесного и рыбного хозяйства - Запрет - 14-01-2012 - 31-12-9999 |

-С безголовым режимом:
| Имя - Применяется - Тип - Срок действия с - Срок действия до |
| Результаты не найдены. |




Ответы (1)


В ходе еще одного исследования я обнаружил добавление

chrome_options.add_argument('--lang=en_US') 

этот фрагмент кода моей программы делает свое дело.

Безголовый Chrome не поддерживает все входящие языки, поэтому некоторые страницы плохо реагируют на это. Поддержка языка, на котором выводится страница, правильно загружает страницу.

person Mihir Verma    schedule 16.07.2019