Парсим данные с сайтов при помощи XPath и Screaming Frog без помощи программистов. Синтаксис XPath для выбора, ссылка на удобное расширение для извлечения пути, примеры для парсинга любых данных + запись моего мастер-класса в гостях у Михаила Шакина.Приветствую. Меня зовут Толстенко Александр. Я SEO-специалист, маркетолог с опытом продвижения: Медицинских клиник, b2b и b2c клиентов, оптовиков, производителей, сайтов услуг и интернет-магазинов.При помощи SEO-оптимизации сайта и платной рекламы, помогаю своим клиентам вывести сайт на первые позиции в Яндекс/Google и увеличить поток клиентов до 10 раз за месяц.📍 Провожу 10 бесплатных консультаций в месяц. Если актуально, пишите в личку и бронируйте место https://t.me/tolstenkoaa.Telegram канал: Толстенко PRO МаркетингВК: https://vk.com/tolstenkoaaРутуб https://rutube.ru/channel/37807177/Ютуб https://www.youtube.com/channel/UCP9el99pUCTNIZwc0O_6FlQ/XPath - Что это такоеXPath (XML Path Language) - это язык запросов, используемый для навигации и поиска информации в XML-документах. Он позволяет точно указать путь к элементам, атрибутам и текстовым данным, которые нужно найти в структуре XML файлов и получить данные при необходимости.XPath предлагает набор выражений, операторов и функций для указания конкретных путей обхода XML-деревьев и фильтрации данных с помощью различных критериев. Эти выражения состоят из элементов и операторов, которые можно комбинировать, чтобы получить нужные результаты.Для чего нужен XPathXPath используется для навигации и выбора элементов 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.) / — Ищет от корневого узла html4.) // — Ищет узлы в документе от текущего узла, который соответствует выбору, независимо от того, где они находятся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 текущего узла, а также сам текущий узел, если это узел note10.) 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] — Выберите все элементы , у которых количество дочерних элементов больше 37.) //a[starts-with(@href, 'https://')] — Выберите все элементы, у которых атрибут href начинается с "https://"8.) //input[matches(@value, '^\d+$')] — Выберите все элементы input, у которых атрибут value содержит только цифры9.) //p[@value="01/2008"] — Выбирает все элементы p, у которых есть атрибут value со значением "01/2008"10.) //p[@value] — Выбирает все элементы p, у которых есть атрибут value11.) //p/text() — Выделит все текстовые узлы внутри всех элементов p12.) //div[not(p)] — Выберите все элементы , у которых не существует дочернего элемента 13.) /div/p[position()<3] — Выбирает первые два элемента p, которые являются прямыми потомками элемента div14.) //tag[position()=1] — Выбирает первый элемент с тегом "tag"15.) /div/ul/li[1] — Выбирает первый элемент li, который является прямым потомком элемента ul в div16.) //li[a] — Выделяет элементы li, в которых есть элемент a17.) //li[last()] — Выделяет последний элемент li в документе18.) //a | //h2 - Выделить все элементы a и h2 с помощью оператора объединения |19.) //tag[@value > 9] — Получить узлы tag, value которых больше 9-ти.20.) //div[note[@value > 9]]/а — Получить только имена узлов, value которых больше 9-ти21.) //div[4]/h2[text() = "Текст"] — Выделит четвертый элемент div, h2 которого содержит слово: Текст22.) /div/note[last()] — Выбирает последний элемент note, который является прямым потомком элемента div23.) /div/note[last()-1] — Выбирает предпоследний элемент note, который является прямым потомком элемента div24.) //*[@id] — Выберите все элементы с атрибутом id25.) //div[contains(@class, 'content')]/p — Выберите все элементы, которые являются дочерними элементамис классом "content"26.) //img[contains(@src, 'logo')] — Выберите все элементы , у которых атрибут src содержит слово "logo"27.) //*[@href[contains(text(), '.pdf')]] — Выберите все элементы со значением атрибута href, оканчивающимся на .pdf28.) //*[@data-toggle='modal'] — Выберите все элементы с атрибутом data-toggle и значением "modal"29.) //tag[@attribute>5] — Выбирает все элементы с тегом "tag" и атрибутом "attribute", значение которого больше 530.) //tag[@attribute="value"] — Выбирает все элементы с тегом "tag" и атрибутом "attribute" со значением "value"Это лишь некоторые примеры запросов для получения данных. Существует много других комбинаций формирования запросов XPath.Какие данные можно извлечь с сайта при помощи XPath и парсераXPath и парсеры могут извлекать различные данные с веб-сайтов. Вот несколько типов данных, которые можно получить при помощи этих инструментов:Количество товаров в категориях;Описание, характеристики и цену товара;Изображения;Наличие и количество отзывов;Количество просмотров статей;Количество лайков у статей;Почтовые ящики;Хлебные крошки;Страницы с видео;Какие страницы, имеют сколько отзывов;На каких страницах размещен определенный текстовый блок или нет;Даты публикаций статей или товаров;Рейтинги товаров или статей.Это лишь некоторые примеры того, что можно извлечь с помощью XPath. Фактически, вы можете извлекать любые данные или атрибуты, доступные на веб-странице в зависимости от ее структуры и организации информации.Формулы по извлечению HTML атрибутов которые будут полезны СЕОшникам1.) //@href — Извлечь все ссылки2.) //a[starts-with(@href,'mailto')]/@href — Получить ссылки, которые содержат “mailto” (email адрес)3.) //a[contains(@href,'tel:')]/@href — Получить все телефоны4.) //img/@src — Получить все URL адреса картинок5.) //img[contains(@class,'name-class')]/@src — Получить все URL адреса источников изображений с именем класса6.) //div[@class='class'] — Получить элементы в тегах с определенным классом, указанным в кавычках7.) count(//h2) — Посчитать количество элементов на странице8.) //*[@itemtype]/@itemtype — Извелчь какие типы микроразметок есть на странице9.) //*[@itemprop='price']/@content — Узнать значение поля свойства разметки10.) //iframe[contains(@src,'https://www.youtube.com/')]/@src — Найти ссылки на все видео с ютуба11.) //table[@class='product-table']//td/text() — Извлечь текст всех ячеек таблицы с классом "product-table"12.) //td[contains(text(),'Weight')]/following-sibling::td — Извлечение данных из ячеек таблиц13.) contains(//meta[@name='description']/@content, 'таргетированное-ключевое-слово') — Проверяет наличие ключевого слова в мета теге14.) //link[@rel=’amphtml’]/@href — Получить URL-адрес AMP15.) //form[*]/input[@type='text']/@name — Имена всех текстовых полей внутри формЭто далеко не весь список, чего можно достать с сайта конкурента. Более того, в конкретном случае, синтаксис будет разный. Составить формулу можно при помощи расширения XPath Helper или нажав правой кнопкой на html элементе и выбрать скопировать XPathКак извлечь данные при помощи XPath со страницыДля извлечения данных со страниц, я использую расширение "XPath Helper".1.) Установите XPath Helper для браузера Google Chrome https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl 2.) После установки, обновите страницу или откройте новую вкладку и перейдите на любую веб-страницу.3.) Нажмите Ctrl-Shift-X (или Command-Shift-X в OS X) или нажмите кнопку XPath Helper на панели инструментов, чтобы открыть консоль XPath Helper.3.) Удерживая нажатой клавишу Shift, наведите указатель мыши на элементы на странице. Поле запроса будет постоянно обновляться, чтобы отображать запрос XPath для элемента под указателем мыши, а в окне результатов будут отображаться результаты для текущего запроса.4. При желании отредактируйте XPath-запрос прямо в консоли. В окне результатов немедленно отразятся ваши изменения.5. Повторите шаг (3), чтобы закрыть консоль.Если консоль вам мешает, удерживайте нажатой клавишу Shift, а затем наведите на нее указатель мыши; он переместится на противоположную сторону страницы.Что можно сделать с помощью Screaming Frog SEO Spider На этом все, спасибо за внимание.Есть, чем поделиться или дополнить? Буду только рад! Пишите в комменты. Спасибо.📍 ХОТИТЕ УВЕЛИЧИТЬ ЗАКАЗЫ В 2-5 РАЗ ЗА 30 ДНЕЙ👇 Пишите в личные сообщения кодовое слово: "СайтТаксиVC"https://t.me/tolstenkoaa☝ Уточню кое какие вопросы, определим дату и время созвона по видео связи.📕 ЧТО ВЫ ПОЛУЧИТЕ ОТ КОНСУЛЬТАЦИИ?1.) За 10-15 минут проведу БЕСПЛАТНУЮ диагностику вашего бизнеса и отвечу на все ваши вопросы.2.) Определим нужный функционал сайта, составлю смету разработки, и продвижения сайта3.) Расскажу, какие инструменты использовать для продвижения, чтобы создать стабильную систему привлечения клиентов.Все это по записи в личных сообщениях.👉 https://t.me/tolstenkoaa☝ В месяц на продвижение беру не более пяти новых проектов. Количество бесплатных диагностик: 10 шт на месяц. Есть ли места, уточняйте в личных сообщениях.----Телеграм: https://t.me/tolstenkoaaTelegram канал: Толстенко PRO МаркетингВК: https://vk.com/tolstenkoaaРутуб https://rutube.ru/channel/37807177/Ютуб https://www.youtube.com/channel/UCP9el99pUCTNIZwc0O_6FlQ/