Проблема с XPath Query с использованием пакета Agility Pack

c# html-agility-pack xpath

Вопрос

Я пытаюсь очистить поле цены с этого веб-сайта, используя пакет Agility Pack.

Мой код выглядит следующим образом.

var web = new HtmlWeb();
var doc = web.Load(String.Format(overClockersURL, componentID));
var priceContent = doc.DocumentNode.SelectSingleNode("//*[@id=\"prodprice\"]");

Я получил запрос XPath, используя функцию « Скопировать как XPath » Firebug.

Проблема, с которой я сталкиваюсь, заключается в том, что SelectSingleNode возвращает null - он, похоже, не находит элемент, указанный в запросе. Я немного зациклен на том, почему, но у меня нет большого опыта работы с XPath, поэтому я бы оценил некоторые указания относительно того, что я сделал неправильно.

Принятый ответ

Когда это произойдет, вы должны проверить, правильно ли загружена страница (вы сказали, что используете HTTP-прокси?)

Попробуйте записать содержимое doc.DocumentNode.OuterHtml в текстовый файл, чтобы вы могли видеть, правильно ли загружена страница. Возможно, вы получаете страницу с ошибкой вместо исходной страницы.


Популярные ответы

Если я запустил этот код:

    var web = new HtmlWeb();
    var doc = web.Load("http://www.overclockers.co.uk/showproduct.php?prodid=GX-033-HS");
    var priceContent = doc.DocumentNode.SelectSingleNode("//*[@id=\"prodprice\"]");
    Console.WriteLine("price=" + priceContent.InnerHtml);

Он выводит:

price=529.99

Кажется, он работает. Вы также можете использовать //span[@id=\"prodprice\"]" что лучше, поскольку оно позволяет избежать всех тегов, не относящихся к SPAN.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему