Примеры XPath4 мин. для чтения


Новичкам, Полезное / Воскресенье, Январь 27th, 2019

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

Заголовки

По умолчанию Screaming Frog собирает только h1 и h2, но если вы хотите собрать h3, используйте код XPath:

//h3

Полученные данные:
заголовки h3
Вы можете собрать только первый h3, особенно если их много на странице:

/descendant::h3[1]

Чтобы собрать первые 10 h3 на странице, используйте:

/descendant::h3[position() >= 0 and position() <= 10]

Для подсчета количества тегов h3 на странице:

count(//h3)

В этом случае «Extract Inner HTML» в крайнем правом раскрывающемся меню необходимо изменить на «Function Value», чтобы это выражение работало правильно:
значение функции

Hreflang

Следующий Xpath в сочетании с Extract HTML Element соберет содержимое всех элементов hreflang:

//*[@hreflang]

Этот код будет собирать весь элемент HTML, со ссылкой и значением hreflang:
Hreflang
Возможно, вам нужны только значения hreflang (например, ru-RU), вы можете указать атрибут с помощью @hreflang:

//*[@hreflang]/@hreflang

Извлеченные данные:
значения hreflang

Schema

Вы можете собирать различные типы схем на странице:

//*[@itemtype]/@itemtype

типы различных схем на странице
Для правил «itemprop» вы можете использовать аналогичный XPath:

//*[@itemprop]/@itemprop

Социальные мета-теги (Open Graph Tags & Twitter Cards)

Вы можете извлечь социальные мета-теги, такие как теги Facebook Open Graph, данные учетной записи или Twitter-карты:

//meta[starts-with(@property, 'og:title')]/@content
//meta[starts-with(@property, 'og:description')]/@content
//meta[starts-with(@property, 'og:type')]/@content
//meta[starts-with(@property, 'og:site_name')]/@content
//meta[starts-with(@property, 'og:image')]/@content
//meta[starts-with(@property, 'og:url')]/@content
//meta[starts-with(@property, 'fb:page_id')]/@content
//meta[starts-with(@property, 'fb:admins')]/@content
//meta[starts-with(@property, 'twitter:title')]/@content
//meta[starts-with(@property, 'twitter:description')]/@content
//meta[starts-with(@property, 'twitter:account_id')]/@content
//meta[starts-with(@property, 'twitter:card')]/@content
//meta[starts-with(@property, 'twitter:image:src')]/@content
//meta[starts-with(@property, 'twitter:creator')]/@content

Адрес электронной почты

Хотите собрать адреса электронной почты с вашего сайта или других веб-сайтов? Пожалуйста:

//a[starts-with(@href, 'mailto')]

С моего сайта код вернет один адрес электронной почты, который находится только на одной странице:
парсинг емейл адреса

Iframes

//iframe/@src

Полученные данные:

iframe

Извлекать только те фреймы, в которые вставлено видео с YouTube:

//iframe[contains(@src ,'www.youtube.com/embed/')]

Извлечение только URL первого iframe, найденного на странице:

(//iframe/@src)[1]

AMP URL

//head/link[@rel='amphtml']/@href

Полученные данные:

amp

Извлечение ссылок из статьи

Следующий XPath запрос будет извлекать ссылки только из основы статьи https://politay.pro/seo-dlya-wordpress/, где содержимое блога содержится в классе 'entry-content'.

//div[@class="entry-content"]//a - получит якорный текст с «Extract Inner HTML»

//div[@class="main-blog--posts_single--inside"]//a/@href - получит URL с «Extract Inner HTML»

//div[@class="main-blog--posts_single--inside"]//a - получит полный код ссылки с «Extract HTML Element»

Извлечение ссылок по анкору

Чтобы извлечь все ссылки с анкором «Политай»:

//a[contains(.,'Политай')]/@href

Этот код чувствителен к регистру, поэтому, если «POLITAY» иногда является «politay», вам придется сделать следующее:

//a[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),'politay')]/@href

5 thoughts on “Примеры XPath4 мин. для чтения

  1. Спасибо! Ваш пример очень помог и облегчил работу в несколько раз. Вообще не знал, что есть такая функция у Frog-а, если честно. Два часа выгружал вручную, подумал, что можно как-то автоматизировать, наткнулся на эту статью, так автор еще и в ЛС отвечает по конструктиву. Еще раз огромное спасибо

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *