Селен

Использование XPath и Selenium для поиска элемента на HTML-странице

Использование XPath и Selenium для поиска элемента на HTML-странице
XPath, также известный как XML Path Language, - это язык для выбора элементов из XML-документа. Поскольку HTML и XML следуют одной и той же структуре документа, XPath также можно использовать для выбора элементов на веб-странице.

Поиск и выбор элементов на веб-странице - ключ к парсингу веб-страниц с помощью Selenium. Для поиска и выбора элементов на веб-странице вы можете использовать селекторы XPath в Selenium.

В этой статье я покажу вам, как находить и выбирать элементы на веб-страницах с помощью селекторов XPath в Selenium с библиотекой Selenium python. Итак, приступим.

Предпосылки:

Чтобы опробовать команды и примеры из этой статьи, вы должны иметь,

  1. Дистрибутив Linux (желательно Ubuntu), установленный на вашем компьютере.
  2. Python 3 установлен на вашем компьютере.
  3. PIP 3 установлен на вашем компьютере.
  4. Python virtualenv пакет установлен на вашем компьютере.
  5. Веб-браузеры Mozilla Firefox или Google Chrome, установленные на вашем компьютере.
  6. Должен знать, как установить драйвер Firefox Gecko или веб-драйвер Chrome.

Для выполнения требований 4, 5 и 6 прочтите мою статью Введение в Selenium в Python 3. Вы можете найти множество статей по другим темам на LinuxHint.ком. Обязательно ознакомьтесь с ними, если вам нужна помощь.

Настройка каталога проекта:

Чтобы все было организовано, создайте новый каталог проекта селен-xpath / следующим образом:

$ mkdir -pv selenium-xpath / драйверы

Перейдите к селен-xpath / каталог проекта следующим образом:

$ cd selenium-xpath /

Создайте виртуальную среду Python в каталоге проекта следующим образом:

$ virtualenv .Venv

Активируйте виртуальную среду следующим образом:

$ источник .Venv / bin / активировать

Установите библиотеку Selenium Python с помощью PIP3 следующим образом:

$ pip3 установить селен

Загрузите и установите все необходимые веб-драйверы в драйверы / каталог проекта. Я объяснил процесс загрузки и установки веб-драйверов в своей статье Введение в Selenium в Python 3.

Получите XPath Selector с помощью Chrome Developer Tool:

В этом разделе я покажу вам, как найти селектор XPath для элемента веб-страницы, который вы хотите выбрать с помощью Selenium, с помощью встроенного инструмента разработчика веб-браузера Google Chrome.

Чтобы получить селектор XPath с помощью веб-браузера Google Chrome, откройте Google Chrome и посетите веб-сайт, с которого вы хотите извлечь данные. Затем нажмите правую кнопку мыши (ПКМ) в пустой области страницы и нажмите Осмотреть открыть Инструмент разработчика Chrome.

Вы также можете нажать + Сдвиг + я открыть Инструмент разработчика Chrome.

Инструмент разработчика Chrome должен быть открыт.

Чтобы найти HTML-представление желаемого элемента веб-страницы, щелкните значок Осмотреть(

), как показано на скриншоте ниже.

Затем наведите указатель мыши на нужный элемент веб-страницы и нажмите левую кнопку мыши (ЛКМ), чтобы выбрать его.

HTML-представление выбранного веб-элемента будет выделено в Элементы вкладка Инструмент разработчика Chrome, как вы можете видеть на скриншоте ниже.

Чтобы получить селектор XPath желаемого элемента, выберите элемент из Элементы вкладка Инструмент разработчика Chrome и щелкните по нему правой кнопкой мыши (ПКМ). Затем выберите Копировать > Копировать XPath, как отмечено на скриншоте ниже.

Я вставил селектор XPath в текстовый редактор. Селектор XPath выглядит так, как показано на скриншоте ниже.

Получите XPath Selector с помощью Firefox Developer Tool:

В этом разделе я покажу вам, как найти селектор XPath для элемента веб-страницы, который вы хотите выбрать с помощью Selenium, с помощью встроенного инструмента разработчика веб-браузера Mozilla Firefox.

Чтобы получить селектор XPath с помощью веб-браузера Firefox, откройте Firefox и посетите веб-сайт, с которого вы хотите извлечь данные. Затем нажмите правую кнопку мыши (ПКМ) в пустой области страницы и нажмите Осмотрите элемент (Q) открыть Инструмент разработчика Firefox.

Инструмент разработчика Firefox должен быть открыт.

Чтобы найти HTML-представление желаемого элемента веб-страницы, щелкните значок Осмотреть(

), как показано на скриншоте ниже.

Затем наведите указатель мыши на нужный элемент веб-страницы и нажмите левую кнопку мыши (ЛКМ), чтобы выбрать его.

HTML-представление выбранного веб-элемента будет выделено в Инспектор вкладка Инструмент разработчика Firefox, как вы можете видеть на скриншоте ниже.

Чтобы получить селектор XPath желаемого элемента, выберите элемент из Инспектор вкладка Инструмент разработчика Firefox и щелкните по нему правой кнопкой мыши (ПКМ). Затем выберите Копировать > XPath как отмечено на скриншоте ниже.

Селектор XPath желаемого элемента должен выглядеть примерно так.

Извлечение данных с веб-страниц с помощью XPath Selector:

В этом разделе я покажу вам, как выбирать элементы веб-страницы и извлекать из них данные с помощью селекторов XPath с библиотекой Selenium Python.

Сначала создайте новый скрипт Python ex01.ру и введите следующие строки кодов.

из selenium import webdriver
из селена.webdriver.общий.ключи импорт Ключи
из селена.webdriver.общий.по импорту По
options = webdriver.ChromeOptions ()
параметры.headless = Правда
браузер = веб-драйвер.Chrome (исполняемый_путь = "./ drivers / chromedriver ",
options = options)
браузер.get ("https: // www.unixtimestamp.com / ")
timestamp = браузер.find_element_by_xpath ('/ html / body / div [1] / div [1]
/ div [2] / div [1] / div / div / h3 [2] ')
print ('Текущая отметка времени:% s'% (отметка времени.текст.split (") [0]))
браузер.Закрыть()

Как только вы закончите, сохраните ex01.ру Скрипт Python.

Строка 1-3 импортирует все необходимые компоненты Selenium.

Строка 5 создает объект параметров Chrome, а строка 6 включает безголовый режим для веб-браузера Chrome.

Строка 8 создает Chrome браузер объект, использующий хромированная отвертка двоичный из драйверы / каталог проекта.

Строка 10 сообщает браузеру загрузить веб-сайт unixtimestamp.ком.

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

Строка 13 анализирует данные временной метки элемента и выводит их на консоль.

Я скопировал селектор XPath отмеченного h2 элемент из unixtimestamp.ком с помощью инструмента разработчика Chrome.

Строка 14 закрывает браузер.

Запустите скрипт Python ex01.ру следующим образом:

$ python3 ex01.ру

Как видите, данные отметки времени печатаются на экране.

Здесь я использовал браузер.find_element_by_xpath (селектор) метод. Единственным параметром этого метода является селектор, который является селектором XPath элемента.

Вместо браузер.find_element_by_xpath () метод, вы также можете использовать браузер.find_element (по, селектор) метод. Этот метод требует двух параметров. Первый параметр От будет От.XPATH поскольку мы будем использовать селектор XPath, а второй параметр селектор будет сам селектор XPath. Результат будет тот же.

Чтобы увидеть, как браузер.find_element () метод работает для селектора XPath, создайте новый скрипт Python ex02.ру, скопируйте и вставьте все строки из ex01.ру к ex02.ру и изменить строка 12 как отмечено на скриншоте ниже.

Как видите, скрипт Python ex02.ру дает тот же результат, что и ex01.ру.

$ python3 ex02.ру

В браузер.find_element_by_xpath () а также браузер.find_element () методы используются для поиска и выбора одного элемента на веб-страницах. Если вы хотите найти и выбрать несколько элементов с помощью селекторов XPath, вам нужно использовать браузер.find_elements_by_xpath () или же браузер.find_elements () методы.

В браузер.find_elements_by_xpath () метод принимает тот же аргумент, что и браузер.find_element_by_xpath () метод.

В браузер.find_elements () метод принимает те же аргументы, что и браузер.find_element () метод.

Давайте посмотрим на пример извлечения списка имен с помощью селектора XPath из генератор случайных имен.Информация с библиотекой Selenium Python.

Неупорядоченный список (ол тег) имеет 10 Ли теги внутри каждого, содержащие случайное имя. XPath для выбора всех Ли теги внутри ол тег в этом случае // * [@ id = ”main”] / div [3] / div [2] / ol // li

Давайте рассмотрим пример выбора нескольких элементов на веб-странице с помощью селекторов XPath.

Создайте новый скрипт Python ex03.ру и введите в нем следующие строки кода.

из selenium import webdriver
из селена.webdriver.общий.ключи импорт Ключи
из селена.webdriver.общий.по импорту По
options = webdriver.ChromeOptions ()
параметры.headless = Правда
браузер = веб-драйвер.Chrome (исполняемый_путь = "./ drivers / chromedriver ",
options = options)
браузер.get ("http: // генератор случайных имен.Информация/")
имена = браузер.find_elements_by_xpath ('
// * [@ id = "main"] / div [3] / div [2] / ol // li ')
для имени в именах:
печать (имя.текст)
браузер.Закрыть()

Как только вы закончите, сохраните ex03.ру Скрипт Python.

Строка 1-8 такая же, как в ex01.ру Скрипт Python. Так что я не буду здесь снова их объяснять.

Строка 10 сообщает браузеру загрузить генератор случайных имен веб-сайта.Информация.

Строка 12 выбирает список имен с помощью браузер.find_elements_by_xpath () метод. Этот метод использует селектор XPath // * [@ id = ”main”] / div [3] / div [2] / ol // li найти список имен. Затем список имен сохраняется в имена Переменная.

В строках 13 и 14 a для цикл используется для перебора имена перечислить и распечатать имена на консоли.

Строка 16 закрывает браузер.

Запустите скрипт Python ex03.ру следующим образом:

$ python3 ex03.ру

Как видите, имена извлекаются с веб-страницы и печатаются на консоли.

Вместо использования браузер.find_elements_by_xpath () метод, вы также можете использовать браузер.find_elements () метод как раньше. Первый аргумент этого метода - От.XPATH, а второй аргумент - это селектор XPath.

Поэкспериментировать с браузер.find_elements () метод, создайте новый скрипт Python ex04.ру, скопируйте все коды из ex03.ру к ex04.ру, и измените строку 12, как показано на скриншоте ниже.

Вы должны получить тот же результат, что и раньше.

$ python3 ex04.ру

Основы XPath Selector:

Инструмент разработчика Firefox или веб-браузера Google Chrome автоматически генерирует селектор XPath. Но этих селекторов XPath иногда недостаточно для вашего проекта. В этом случае вы должны знать, что делает определенный селектор XPath для создания вашего селектора XPath. В этом разделе я собираюсь показать вам основы селекторов XPath. Затем вы сможете создать свой собственный селектор XPath.

Создать новый каталог www / в каталоге вашего проекта следующим образом:

$ mkdir -v www

Создать новый файл web01.html в www / каталог и введите следующие строки в этом файле.






Базовый HTML-документ


Привет мир



Как только вы закончите, сохраните web01.html файл.

Запустите простой HTTP-сервер на порту 8080, используя следующую команду:

$ python3 -m http.сервер - каталог www / 8080

HTTP-сервер должен запуститься.

У вас должен быть доступ к web01.html файл, используя URL-адрес http: // localhost: 8080 / web01.html, как видно на скриншоте ниже.

Когда открыт Firefox или Chrome Developer Tool, нажмите + F открыть окно поиска. Вы можете ввести здесь свой селектор XPath и очень легко увидеть, что он выбирает. Я собираюсь использовать этот инструмент в этом разделе.

Селектор XPath начинается с косая черта (/) большую часть времени. Это похоже на дерево каталогов Linux. В / является корнем всех элементов на веб-странице.

Первый элемент - это html. Итак, селектор XPath / html выбирает весь html тег.

Внутри html тег, у нас есть тело тег. В тело тег можно выбрать с помощью селектора XPath / html / body

В h1 заголовок находится внутри тело тег. В h1 заголовок можно выбрать с помощью селектора XPath / html / body / h1

Этот тип селектора XPath называется селектором абсолютного пути. В селекторе абсолютного пути вы должны перемещаться по веб-странице от корня (/) страницы. Недостатком селектора абсолютного пути является то, что даже небольшое изменение структуры веб-страницы может сделать ваш селектор XPath недействительным. Решением этой проблемы является относительный или частичный селектор XPath.

Чтобы увидеть, как работает относительный или частичный путь, создайте новый файл web02.html в www / каталог и введите в нем следующие строки кодов.






Базовый HTML-документ


Привет мир



это сообщение




Привет мир


Как только вы закончите, сохраните web02.html файл и загрузите его в свой веб-браузер.

Как видите, селектор XPath // div / p выбирает п тег внутри div тег. Это пример относительного селектора XPath.

Относительный селектор XPath начинается с //. Затем вы указываете структуру элемента, который хотите выбрать. В таком случае, дел / п.

Так, // div / p означает выбрать п элемент внутри div элемент, неважно, что перед ним.

Вы также можете выбирать элементы по различным атрибутам, например я бы, класс, тип, так далее. используя селектор XPath. Посмотрим, как это сделать.

Создать новый файл web03.html в www / каталог и введите в нем следующие строки кодов.






Базовый HTML-документ


Привет мир



это сообщение


это еще одно сообщение


заголовок 2


Lorem ipsum dolor sit amet conctetur, adipisicing elit. Quibusdam
eligendi doloribus sapiente, molestias quos quae non nam incidunt quis delectus
facilis magni officiis псевдоним neque atque fuga? Unde, aut natus?




это нижний колонтитул


Как только вы закончите, сохраните web03.html файл и загрузите его в свой веб-браузер.

Допустим, вы хотите выбрать все div элементы, которые имеют класс название container1. Для этого вы можете использовать селектор XPath // div [@ class = 'container1']

Как видите, у меня есть 2 элемента, которые соответствуют селектору XPath // div [@ class = 'container1']

Выбрать первый div элемент с класс название container1, Добавлять [1] в конце XPath выберите, как показано на скриншоте ниже.

Таким же образом можно выбрать второй div элемент с класс название container1 используя селектор XPath // div [@ class = 'container1'] [2]

Вы можете выбрать элементы по я бы также.

Например, чтобы выбрать элемент, имеющий я бы из footer-msg, вы можете использовать селектор XPath // * [@ id = 'footer-msg']

Здесь * перед [@ id = 'footer-msg'] используется для выбора любого элемента независимо от его тега.

Это основы селектора XPath. Теперь у вас должна быть возможность создать собственный селектор XPath для ваших проектов Selenium.

Заключение:

В этой статье я показал вам, как находить и выбирать элементы на веб-страницах с помощью селектора XPath с библиотекой Selenium Python. Я также обсудил наиболее распространенные селекторы XPath. Прочитав эту статью, вы почувствуете себя довольно уверенно, выбирая элементы с веб-страниц с помощью селектора XPath с библиотекой Selenium Python.

Как показать счетчик FPS в играх для Linux
Игры для Linux получили серьезный толчок, когда Valve объявила о поддержке Linux для клиента Steam и своих игр в 2012 году. С тех пор многие игры AAA ...
Как загрузить и играть в Sid Meier's Civilization VI в Linux
Введение в игру Civilization 6 - это современный подход к классической концепции, представленной в серии игр Age of Empires. Идея была довольно просто...
Как установить Doom и играть в него в Linux
Введение в Doom Серия Doom возникла в 90-х годах после выхода оригинальной Doom. Это мгновенно стал хитом, и с тех пор серия игр получила множество на...