SELECTSINGLENODE и SELECTNODES XPATH SYNTAXC#

Место общения программистов C#
Ответить
Anonymous
 SELECTSINGLENODE и SELECTNODES XPATH SYNTAX

Сообщение Anonymous »

Мой вопрос очень похож на этот xmlnode.selectsinglenode Syntax для поиска в узле в C# < /p>

Я пытаюсь использовать пакет гибкости HTML для вытягивания цены / Состояние/цена суда ... вот URL, который я скрещиваю: http://www.amazon.com/gp/offer-listing/ ... allобразно br /> Вот фрагмент моего кода: < /p>


Код: Выделить всё

    string results = "";
var w = new HtmlWeb();
var doc = w.Load(url);
var nodes = doc.DocumentNode.SelectNodes("//div[@class='a-row a-spacing-medium olpOffer']");

if (nodes != null)
{
foreach (HtmlNode item in nodes)
{
var price = item.SelectSingleNode(".//span[@class='a-size-large a-color-price olpOfferPrice a-text-bold']").InnerText;
var condition = item.SelectSingleNode(".//h3[@class='a-spacing-small olpCondition']").InnerText;
var price_shipping = item.SelectSingleNode("//span[@class='olpShippingPrice']").InnerText;
results += "price " + price + " condition " + condition + " ship " + price_shipping + "\r\n";
}
}
return results;
Независимо от того, какую комбинацию .// и . и ./ и / и т. д... Я не могу получить то, что хочу (сейчас пытаюсь изучить xpaths), также в настоящее время он возвращает только 1-й элемент снова и снова, как и исходный вопрос, на который я ссылался ранее. Я думаю, что мне не хватает фундаментального понимания того, как работает выбор узлов и/или что считается узлом.



ОБНОВЛЕНИЕ



Хорошо, я изменил URL-адрес, чтобы он указывал на другую книгу, и первые два элемента работают как ожидалось... Когда я пытаюсь изменить третий элемент (price_shipping) на ".//" Абсолютно нет информация извлекается из чего угодно. Это должно быть связано с тем, что иногда даже не указана цена доставки, и этот интервал опущен. Как мне с этим справиться? Я пробовал, если цена_доставка !=null.



ОБНОВЛЕНИЕ



Решено. Я удалил ".InnerText" из Price_shipping, который вызывал проблемы, когда он был нулевым... затем я выполнил нулевую проверку, и тогда можно было безопасно использовать .InnerText.

Подробнее здесь: https://stackoverflow.com/questions/181 ... ath-syntax
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»