Парсим данные сайта целиком и бесплатно
Парсим данные с сайтов при помощи XPath и Screaming Frog без помощи программистов. Синтаксис XPath для выбора, ссылка на удобное расширение для извлечения пути, примеры для парсинга любых данных + запись моего мастер-класса в гостях у Михаила Шакина.
Приветствую. Меня зовут Толстенко Александр. Я SEO-специалист, маркетолог с опытом продвижения: Медицинских клиник, b2b и b2c клиентов, оптовиков, производителей, сайтов услуг и интернет-магазинов.
При помощи SEO-оптимизации сайта и платной рекламы, помогаю своим клиентам вывести сайт на первые позиции в Яндекс/Google и увеличить поток клиентов до 10 раз за месяц.
📍 Провожу 10 бесплатных консультаций в месяц. Если актуально, пишите в личку и бронируйте место https://t.me/tolstenkoaa.
Telegram канал: Толстенко PRO Маркетинг
XPath - Что это такое
XPath (XML Path Language) - это язык запросов, используемый для навигации и поиска информации в XML-документах. Он позволяет точно указать путь к элементам, атрибутам и текстовым данным, которые нужно найти в структуре XML файлов и получить данные при необходимости.
XPath предлагает набор выражений, операторов и функций для указания конкретных путей обхода XML-деревьев и фильтрации данных с помощью различных критериев. Эти выражения состоят из элементов и операторов, которые можно комбинировать, чтобы получить нужные результаты.
Для чего нужен XPath
XPath используется для навигации и выбора элементов XML-документов. Он позволяет находить пути к элементам и их атрибутам, а также выполнять операции с ними: поиск, фильтрация, выборка.
Вот некоторые основные случаи использования XPath:
1.) Поиск элементов: XPath позволяет найти определенные элементы в XML-документе с помощью путей и фильтров. Например, можно найти все элементы определенного типа или имеющие определенное значение атрибута.
2.) Извлечение данных: XPath позволяет извлекать конкретные значения из XML-документа. Например, можно получить содержимое элемента или значение его атрибута.
3.) Проверка условий: XPath позволяет задавать условия и проверять их в XML-документе. Например, можно проверить, что значение атрибута соответствует определенному критерию или что в XML-документе есть определенный элемент.
4.) Навигация по структуре: XPath позволяет перемещаться по структуре XML-документа, находить конкретные узлы и выполнять с ними операции. Например, можно перейти к родительскому или дочернему элементу, выбрать первый или последний элемент, перейти на следующий или предыдущий элемент, а также совершать другие действия для исследования структуры XML-документа.
Использование XPath позволяет эффективно и удобно работать с XML-данными, особенно при обработке и анализе больших объемов информации.
Кому и зачем нужен Xpath
Если коротко — XPath нужен всем, кто работает с XML.
XPath широко используется в различных областях: программирование, веб-скрапинг, автоматизацию тестирования и анализ данных. Язык запросов позволяет легко и эффективно обращаться к нужным элементам в структурированных документах XML к нужным элементам, совершать какие то операции или получить необходимые данные.
Это лишь часть сценариев, в когда язык XPath может помочь — на самом деле, сценариев может быть намного больше.
Синтаксис XPath
Для выбора узлов в XML документе с помощью XPath используются выражения путей. Выборка узла производится следуя по заданному пути или по, так называемым, шагам.
Синтаксис XPath описывает правила для создания выражений, которые позволяют точно указать, какие элементы и атрибуты должны быть выбраны из XML-структуры. Точно указать, какой элемент выбрать нужно с помощью XPath можно при помощи:
1.) Выбора узлов
2.) Пути выбора элементов
3.) Оси направления выбора
4.) Функций
5.) Предикатов
Выбор узлов
Чтобы выбрать нужный узел в XML документе, нужно обратиться к нему при помощи языка запросов XPath, указав путь к нужному элементу. Узел выбирается следуя по заданному пути.
Базовый синтаксис XPath для парсинга элементов:
1.) * — Выбрать любой элемент.
2.) [] — Найти конкретный элемент. Пример: //li[1]
имя_узла — Выбирает все узлы с указанным именем узла. Пример: div, p и т.д.
3.) / — Ищет от корневого узла html
4.) // — Ищет узлы в документе от текущего узла, который соответствует выбору, независимо от того, где они находятся
5.) . — Ищет текущий узел
6.) .. — Ищет родителя текущего узла
7.) @ — Ищет нужный атрибут. Пример: //p[@value="2008"]
Абсолютные и относительные пути обращения к элементам
К конкретному элементу можно обратиться двумя способами:
1.) Абсолютным. Абсолютный xpath начинается со слеша ( / ) и указывает на полный путь от корневого узла до целевого узла.
Пример выражения в XPath: /html/body/div[1]/h1
Конструкция означает: "выбрать первый элемент div, который находится по пути html > body > div и затем выбрать его дочерний элемент h1".
2.) Относительным. Относительный путь начинается с двух слешей (//) и указывает на путь от любого узла, который соответствует определенным критериям, до целевого узла. Пример: //div[@id='main']
Конструкция означает: "выбрать любой элемент div, который имеет атрибут id со значением 'main'".
Общие функции XPath
Язык XPath имеет набор встроенных функций, которые позволяют осуществлять различные операции с XML-документами. Вот некоторые из основных функций XPath:
1.) text() - возвращает текстовое содержимое элемента.
2.) count() - возвращает количество элементов, соответствующих указанному выражению.
3.) normalize-space() - удаляет лишние пробелы из строки и заменяет последовательности пробелов на одиночные пробелы.
4.) starts-with(x,y) - проверяет, начинается ли строка с x-y.
5.) contains(x,y) - проверяет, содержит ли строка x-y.
6.) last() - возвращает последнюю позицию элемента в выборке.
7.) position() - возвращает позицию текущего элемента в выборке.
8.) name() - возвращает имя текущего элемента.
9.) sum() - суммирует значения элементов выборки.
10.) string() - преобразует узел в строку.
11.) lower-case() - преобразует текст в нижний регистр.
12.) @attribute - выбирает значение указанного атрибута.
13.) concat() - объединяет две или более строки.
14.) string-length() - возвращает длину строки.
15.) substring() - возвращает подстроку из строки, начиная с указанной позиции.
Кроме этих основных функций, XPath также предоставляет более сложные функции, такие как функции математических операций (например, floor(), round(), sum()), функции работы с датами и временем и другие.
Оси XPath
Ось в XPath - это специальная концепция, которая используется для указания направления движения при поиске элементов в документе. Оси позволяют выбирать элементы, которые относятся к определенным отношениям с другими элементами в дереве XML или HTML.
В XPath есть несколько осей, которые можно использовать при создании выражений:
1.) child::note — Выбирает все узлы note, которые являются прямыми потомками текущего узла
2.) attribute::date — Выбирает атрибут date текущего узла
3.) child::* — Выбирает всех прямых потомков текущего узла
4.) attribute::* — Выбирает все атрибуты текущего узла
5.) child::text() — Выбирает все текстовые узлы текущего узла
6.) child::node() — Выбирает всех прямых потомков текущего узла
7.) descendant::note — Выбирает всех потомков note текущего узла
8.) ancestor::note — Выбирает всех предков note текущего узла
9.) ancestor-or-self::note — Выбирает всех предков note текущего узла, а также сам текущий узел, если это узел note
10.) child::*/child::heading — Выбирает всех прямых потомков прямых потомков (“внуков") heading текущего узла
11.) last() — Выделяет последний элемент в дереве.
Предикаты (Коллекции)
Предикаты — конструкции, которые используются для фильтрации элементов и выбора конкретных элементов с помощью определенных условий.
Вот несколько примеров использования предикатов в XPath для :
1.) //a — Выберите все элементы в документе
2.)//a[@class='active'] — Выберите все элементы, у которых атрибут class равен "active"
3.) //input[@type='checkbox'] — Выберите все элементы input, у которых атрибут type равен "checkbox"
4.) //input[@type='text'] — Выберите все элементы input с атрибутом type равным "text"
5.) //p[contains(text(), 'Lorem')] — Выберите все элементы
, у которых текст содержит слово "Lorem"
6.) //div[count(p) > 3] — Выберите все элементы
, у которых количество дочерних элементов
больше 3
7.) //a[starts-with(@href, 'https://')] — Выберите все элементы, у которых атрибут href начинается с "https://"
8.) //input[matches(@value, '^\d+