Я пытаюсь использовать HTML Agility Pack для получения цены/условия/цены доставки... Вот URL-адрес, который я очищаю: http://www.amazon.com/gp/offer-listing/ ... dition=all
Вот фрагмент моего кода:
Код: Выделить всё
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;
ОБНОВЛЕНИЕ
Хорошо, я изменил URL-адрес, чтобы он указывал на другую книгу, и первые два элемента работают так, как ожидалось... Когда я пытаюсь изменить третий элемент (price_shipping) на ".//" Абсолютно нет информация извлекается из чего угодно. Должно быть, это связано с тем, что иногда даже не указана цена доставки, и этот интервал опущен. Как мне с этим справиться? Я пробовал, если цена_доставка !=нуль.
ОБНОВЛЕНИЕ
Решено. Я удалил ".InnerText" из Price_shipping, который вызывал проблемы, когда он был нулевым... затем я выполнил нулевую проверку, и тогда можно было безопасно использовать .InnerText.
Подробнее здесь: https://stackoverflow.com/questions/181 ... ath-syntax
Мобильная версия