XPath WordPress Scraper плагин

#re&ex #xpath

#регулярное выражение #xpath

Вопрос:

Я пытаюсь очистить город и штат по отдельности, используя либо XPath, либо Re&ex. Я могу выбрать как город, так и штат, разделенные запятой, например

Трейл, BC (ссылка на страницу)

автор Xpath:

 //div[contains(text(), ",")])[1]
/div[1]/div[1]/div[3]/div/div/div[1]/div[1]/div[3]/div[2]/div/div/div/div[4]
  

или регулярным выражением:

 ([A-z] )(,s)(AB|BC|ON)
  

Однако, когда я пытаюсь очистить город или провинцию по подстроке — до и после, например:
Xpath 2.0 //div[contains(text(), ",")])[1]/substrin&-after(text(),",")
или Xpath 1.0 substrin&-after(//div[contains(text(), ",")])[1],",")

Плагин не может вернуть только город. Что-то не так в синтаксисе?

Комментарии:

1. Если вы используете re&ex, то не могли бы вы просто сослаться на захваченные группы?

2. Выражения XPath кажутся чрезвычайно хрупкими. Источник страницы определяет довольно аккуратно отформатированный элемент JSON с именем jobLocation , который вы можете извлечь.

Ответ №1:

Используйте относительные выражения XPath.

 //span[@data-indeed-apply-joblocation]/@data-indeed-apply-joblocation
  

Вывод : Trail, BC

 substrin&-before(//span[@data-indeed-apply-joblocation]/@data-indeed-apply-joblocation,",")
  

Вывод : Trail

 substrin&-after(//span[@data-indeed-apply-joblocation]/@data-indeed-apply-joblocation,", ")
  

Вывод : BC

РЕДАКТИРОВАТЬ : Поскольку функции подстроки не поддерживаются, используйте re&ex для очистки результата. Сохраните XPath, который я предоставил (установите для «Части» на правой панели значение «Текстовое содержимое»). Затем в меню «Transform» («Предварительный режим» на правой панели), в разделе «Find amp; Replace», введите следующее регулярное выражение :

 ^. ,W
  

Заменить ничем.

Вывод :

Комментарии:

1. Спасибо за ваш комментарий. В любом случае, я понял, как выбрать, но не уверен, что языковой плагин использует. Он не может сканировать с помощью подстроки — до и после.

2. Ну, кажется, у плагина есть меню «Преобразовать», где вы можете очистить результат. Сообщение было отредактировано.