#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. Ну, кажется, у плагина есть меню «Преобразовать», где вы можете очистить результат. Сообщение было отредактировано.