В aws лямбда (python) xpath нельзя использовать с селеном ⇐ Python
-
Гость
В aws лямбда (python) xpath нельзя использовать с селеном
Я использую AWS Lambda (python3.7) для парсинга веб-страниц. Вы можете проверить xpath каждого элемента целевого веб-сайта, используя инструменты разработчика в браузере Google Chrome на локальном компьютере. Даже если вы укажете этот xpath в Lambda, будет выведена следующая ошибка.
из веб-драйвера импорта селена от времени импортировать сон Защиту лямбда_handler (событие, контекст): URL = "https://abcdefg.com" параметры = веб-драйвер.ChromeOptions() options.binary_location = "/opt/headless/headless-chromium" options.add_argument("--headless") options.add_argument('--single-process') options.add_argument('--disable-dev-shm-usage') options.add_argument("--no-песочница") браузер = вебдрайвер.Chrome( executable_path="/opt/headless/chromedriver", опции=опции ) браузер.get(URL-адрес) id = Browser.find_element_by_id("электронная почта отправителя") id.send_keys("abc@example.com") пароль = браузер.find_element_by_id("пароль пользователя") пароль.send_keys("P@ssw0rd") login_button = браузер.find_element_by_name("commit") логин_кнопка.клик() спать(5) печать (браузер.page_source) xpath = браузер.find_element(by=By.XPATH, value="/html/body/div[1]/div/div[2]/div/main/div[3]/form/div[1]/div[ 1]/вход") браузер.закрыть() Подробности об ошибке: [ОШИБКА] NoSuchElementException: Сообщение: нет такого элемента: невозможно найти элемент: { "метод": "xpath", "селектор": "/html/body/div[1]/div/div[2]/div/main/div[3]/form/div[1]/div[1]/input" } Когда я попытался получить каждый элемент в Lambda, мне удалось без проблем получить элементы name и id. Однако, поскольку источник html проверить невозможно, похоже, что и xpath указать нельзя.
Я запустил «browser.page_source», как показано ниже. Однако проблема может заключаться в том, что я не могу проверить содержимое тега, содержащего элемент, на который я хочу ссылаться.
Журналы CloudWatch Ниже
Я был бы признателен, если бы вы рассказали мне, как это сделать с помощью xpath.
Я использую AWS Lambda (python3.7) для парсинга веб-страниц. Вы можете проверить xpath каждого элемента целевого веб-сайта, используя инструменты разработчика в браузере Google Chrome на локальном компьютере. Даже если вы укажете этот xpath в Lambda, будет выведена следующая ошибка.
из веб-драйвера импорта селена от времени импортировать сон Защиту лямбда_handler (событие, контекст): URL = "https://abcdefg.com" параметры = веб-драйвер.ChromeOptions() options.binary_location = "/opt/headless/headless-chromium" options.add_argument("--headless") options.add_argument('--single-process') options.add_argument('--disable-dev-shm-usage') options.add_argument("--no-песочница") браузер = вебдрайвер.Chrome( executable_path="/opt/headless/chromedriver", опции=опции ) браузер.get(URL-адрес) id = Browser.find_element_by_id("электронная почта отправителя") id.send_keys("abc@example.com") пароль = браузер.find_element_by_id("пароль пользователя") пароль.send_keys("P@ssw0rd") login_button = браузер.find_element_by_name("commit") логин_кнопка.клик() спать(5) печать (браузер.page_source) xpath = браузер.find_element(by=By.XPATH, value="/html/body/div[1]/div/div[2]/div/main/div[3]/form/div[1]/div[ 1]/вход") браузер.закрыть() Подробности об ошибке: [ОШИБКА] NoSuchElementException: Сообщение: нет такого элемента: невозможно найти элемент: { "метод": "xpath", "селектор": "/html/body/div[1]/div/div[2]/div/main/div[3]/form/div[1]/div[1]/input" } Когда я попытался получить каждый элемент в Lambda, мне удалось без проблем получить элементы name и id. Однако, поскольку источник html проверить невозможно, похоже, что и xpath указать нельзя.
Я запустил «browser.page_source», как показано ниже. Однако проблема может заключаться в том, что я не могу проверить содержимое тега, содержащего элемент, на который я хочу ссылаться.
Журналы CloudWatch Ниже
Я был бы признателен, если бы вы рассказали мне, как это сделать с помощью xpath.