2015-06-04 3 views
0

Я пытаюсь извлечь цены и валюту на HTML-странице (для примера this webpage), используя выражение XPath.Xpath, чтобы найти цены на веб-странице

Я пробовал:

$x("//*[matches(text(),'^\$\d+\.\d{1,2}')]") 

в консоли Firefox, но он печатает undefined. Я ищу решение, основанное на регулярных выражениях.

ответ

1

Из вашего примера, поскольку вы используете matches, я выхожу, что вы используете XPath 2. Но, вероятно, он не поддерживается вашим браузером. Проверьте свой XPath version.

Ниже описана другая версия, которая будет работать для XPath 1.

Обратите внимание, что XPath для <span> элементов выглядит следующим образом:

//*[@id="result_0"]/div/div[3]/div[1]/a/span 
//*[@id="result_1"]/div/div[3]/div[1]/a/span 
//*[@id="result_2"]/div/div[3]/div[1]/a/span 

Таким образом, вы должны использовать регулярное выражение для этого идентификатора и получить текст из диапазона.

Вы можете использовать matches (XPath2) или starts-with (XPath1) для первой части и text(), чтобы получить текст из span. Итак, чтобы проверить его в вашем браузере, используйте что-то вроде этого:

$x('//*[starts-with(@id,"result_")]/div/div[3]/div[1]/a/span/text()') 
+0

Спасибо, я попробовал ваше предложение, однако по некоторым причинам мне нужно регулярное выражение, я также сомневаюсь, что мой Firefox действительно поддерживает XPath 2? – Ahmad

+0

Однако на этой странице валюта равна $, но я хотел бы получить выражение, которое извлекает валюту и цену в виде отдельных элементов. – Ahmad

0

Как насчет следующего регулярного выражения? :

\/\/\*\[\@id="result_\d+"\]\/div\/div\[3\]\/div\[1\] 

На самом деле все, что вам нужно будет в исходный код страницы с относительной Xml тега и получить его XPath по правой кнопкой мыши и выбрав copy xpath затем, если вы хотите использовать регулярные выражения для всех случаев, вам нужно, чтобы избежать регулярные выражения и используйте \d+ для номера результата.

+0

Возможно, я задал свой вопрос плохо, мне нужно регулярное выражение для цены и валюты, кстати, какая среда вы говорят? Я не вижу 'copy xpath' – Ahmad

+0

Я думал, что вы хотите регулярное выражение для перемещения файла x/html вручную! если вы используете веб-скребок, который является правильным способом для таких задач, xpath, полученный из браузера, может не совпадать с вашим селектором xpath скрепера. Могу ли я спросить вас, какие у вас инструменты для этой задачи? – Kasramvd

+0

Мне нужно, чтобы он действительно использовался в статье (статье), он должен быть в стандартном XPath, чтобы описать, как можно найти валюту и цены на веб-страницах. – Ahmad

Смежные вопросы