Почему иногда не удается найти html-узел (HTMLAgilityPack)?

133
16 июня 2019, 11:20
    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(item);
    string title=null;
    string cost= null;
    var titleNode = doc.DocumentNode.SelectSingleNode("//span[contains(@class, 'title-info-title-text')]");
    if (titleNode != null)
        title = titleNode.InnerText;
    var costNode = doc.DocumentNode.SelectSingleNode("//span[contains(@class, 'js-item-price')]");
    if(costNode!=null)
        cost = costNode.GetAttributeValue("content", "0");

Этот код выполняется в нескольких потоках и обычно все нормально. Но иногда SelectSingleNode возвращает null. Я ставил брейк-поинт и проверял в ручную. Нужный тег был. Ощущение, что doc.LoadHtml() - работает асинхронно, и периодически не успевает загрузить страницу. Или это моя оперативная память отъезжает?

Может быть кто-то сталкивался с такой проблемой?

Answer 1

Попробуйте сначала загружать html например с помощью WebClient, а потом уже скармливать его HtmlDocument

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlstring);

Если все еще будут проблемы, можно пытаться повторять загрузку в цикле несколько раз. Пример кода здесь

READ ALSO
Как заблокировать только горизонтальную автопрокрутку?

Как заблокировать только горизонтальную автопрокрутку?

Как заблокировать только горизонтальную автопрокрутку и оставить автопрокрутку вертикальную?

125
LINQ to SQL использование списка как фильтр

LINQ to SQL использование списка как фильтр

Помогите разобратьсяЯ только начал изучать Sharp и LINQ по этому каждый шаг дается с трудом, вот и сейчас столкнулся с проблемой, решение которой...

112
Ошибка при проверке файла Hunspell

Ошибка при проверке файла Hunspell

Как можно поднять на ubuntu 1604 сервере hunspell php После дебага ругается на отсутствия файлов

147
Обновление AJAX

Обновление AJAX

Помогите разобратьсяЕсть страница, на ней выводятся блоки

112