Из вашего примера, поскольку вы используете 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()')
Спасибо, я попробовал ваше предложение, однако по некоторым причинам мне нужно регулярное выражение, я также сомневаюсь, что мой Firefox действительно поддерживает XPath 2? – Ahmad
Однако на этой странице валюта равна $, но я хотел бы получить выражение, которое извлекает валюту и цену в виде отдельных элементов. – Ahmad