В 21-й версии Screaming Frog появилась расширенная поддержка...
204
В 21-й версии Screaming Frog появилась расширенная поддержка XPath, перешедшая с версии 1.0 на версии 2.0, 3.0 и 3.1.
Несколько примеров XPath-запросов:
1. string-join()
Объединяет несколько элементов контента, соответствующих вашему XPath-запросу, разделяя их указанным разделителем
— Синтаксис: string-join([Целевой XPath],"[разделитель]")
— Пример: Извлечение всего текста из тегов <p>, разделенного пробелами:
string-join(//p," ")
2. distinct-values()
Удаляет дубликаты из результатов экстракции, возвращая только уникальные значения
— Синтаксис: distinct-values([Целевой XPath])
— Пример 1: Получить список всех уникальных CSS-классов на странице:
distinct-values(//@class)
— Пример 2: Комбинация с count() для выявления страниц с раздутым HTML:
count(distinct-values(//@class))
3. starts-with()
Фильтрует результаты, включая те, которые начинаются с определенного символа или строки
— Синтаксис: starts-with([Целевой XPath] 'искомая строка')]
— Пример: Извлечение всех относительных УРЛов для аудита внутренней перелинковки:
//a[starts-with(@href, '/')]/@href
4. ends-with()
Работает как starts-with, но ищет строку в конце атрибута
— Синтаксис: ends-with([Целевой XPath] 'искомая строка')]
— Пример: Поиск всех ссылок на PDF-документы:
//a[ends-with(@href, '.pdf')]/@href
5. matches()
Позволяет комбинировать XPath с регулярными выражениями для ускорения кастомной экстракции
— Синтаксис: matches([Целевой XPath], '[правило regex]')]
— Пример 1: Извлечение ссылок на изображения:
//a[matches(@href, '\.(jpg|png|gif)$')]/@href
— Пример 2: Определение ссылок с UTM-метками:
//a[matches(@href, 'utm_')]/@href
6. exists()
Проверяет наличие определенного HTML-элемента на странице
— Синтаксис: exists([Целевой XPath])
— Пример: Определение отсутствия важных HTML-сниппетов:
exists(//meta[@name='description'])
7. format-dateTime()
Форматирует даты публикации для удобной организации
— Синтаксис: format-dateTime([Целевой XPath], '[Y0001]-[M01]-[D01]')
— Пример 1: Организация дат в формате ГГГГ-ММ-ДД:
format-dateTime(//time/@datetime, '[Y0001]-[M01]-[D01]')
— Пример 2: Получение дат из Open graph данных:
format-dateTime(//meta[@property="article:published_time"]/@content, '[Y0001]-[M01]-[D01]')
8. if()
Возвращает значение XPath только при выполнении определенных условий
— Синтаксис: if([условный XPath]) then [Целевой XPath] else ''
— Пример 1: Проверка канонических УРЛов страниц с тегами noindex:
if(contains(//meta[@name='robots']/@content, 'noindex')) then //link[@rel='canonical']/@href else 'Не ноиндексировано'
— Пример 2: Определение тонкого контента по количеству тегов <p>:
if(count(//p) < 4) then string-join(//p, ' ') else ''
9. tokenize()
Разбивает извлеченное значение по разделителю, аналогично SPLIT() в Google Sheets
— Синтаксис: [Целевой XPath] ! tokenize(., '[разделитель]')
— Пример: Проверка канонических УРЛов страниц с тегами noindex:
//a[contains(@href,"http")]/@href ! tokenize(., '/')
10. Извлечение всех Open graph тегов в одну ячейку:
string-join(//meta[starts-with(@property, 'og:')]/concat(@property, " - ", @content), codepoints-to-string(10))
Это комбинация функций string-join(), starts-with(), и concat() для извлечения всех мета-тегов, где "property" начинается с "og:" и форматирования их со значениями контента.
https://www.screamingfrog.co.uk/advanced-xpath-screaming-frog/
@MikeBlazerX
Ссылки из поста:– https://t.me/MikeBlazerX
Источник новости https://t.me/mikeblazerx/4417...

