Html Agility Pack - как выбрать правильный класс диапазона

c# html-agility-pack

Вопрос

Я пытаюсь найти самую низкую цену на страницах Amazon. Давайте используем этот URL как пример:

http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9963BB#/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=E999-4701&rh=i%3Aaps%2Ck%3AE999-4701

Я хочу найти самую низкую цену ... номер справа от «нового».

Вот что я пробовал:

        using (TextWriter tw = new StreamWriter(@"D:\AmazonUrls.txt"))
        {
            foreach (string item in list)
            {
                var webGet = new HtmlWeb();
                var document = webGet.Load(item);
                var lowestPrice = document.DocumentNode.SelectSingleNode("//span[@id='subPrice']");
                if (lowestPrice != null)
                {
                    Console.WriteLine(lowestPrice);                
                }

            }           
        }

Я не получаю никакого результата. Где я иду не так?

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

Вы запрашиваете узлы с id subPrice, но на самом деле это class который имеет subPrice:

<span class="subPrice">
        <a href="http://rads.stackoverflow.com/amzn/click/B001BA0W06">5 new</a>
    from <span class="price">$245.90</span></span>

так,

var lowestPrice = document.DocumentNode.SelectSingleNode("//span[@class='subPrice']");

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



Related

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