Парсинг / Object reference not set to an instance of an object.

Salvation

Новичок
Регистрация
23.02.2019
Сообщения
10
Благодарностей
2
Баллы
3
Привет. Не могу понять в чем ошибка . Код из статьи из статьи https://zennolab.com/discussion/threads/pishem-parsery-v-zennoposter-na-c-instrukcija-dlja-novichkov-ot-novichka.59596/

C#:
HtmlElementCollection luboe_imy = null; //все HtmlElementCollection лучше объявлять в самом верху

//начало: подключение таблицы
var package = new ExcelPackage(new FileInfo(@"E:\123.xlsx")); //путь к табличке
ExcelWorksheet tabletest = package.Workbook.Worksheets[1]; //где tabletest - имя(любое) – лучше вообще никогда не менять, а 1 - номер листа в excel
//конец: подключение таблицы

Tab tab = instance.ActiveTab;
HtmlElementCollection itemsCollection = tab.FindElementsByXPath("//tr[@id]");
project.SendInfoToLog("Количество элементов на страничке = " + itemsCollection.Count().ToString(), true);

for(int i=1; i<100; i++) //цикл перебора найденных элементов. luboe_imy.Count означает, что цикл будет крутиться до тех пор, пока не закончатся все найденные нами элементы
{
    
  string ssylk = luboe_imy.GetByNumber(i).GetAttribute("href"); //ложим в переменную ssylk атрибут href нашего элемента
  project.SendInfoToLog(ssylk); //выводим в лог для самопроверки
  tabletest.SetValue(i,2, ssylk); //записываем данные в таблицу: строка, столбец, что записываем
}

package.Save(); //сохраняем в таблицу
Zennoposter ругается на строку string ssylk = luboe_imy.GetByNumber(i).GetAttribute("href");

Выполнение действия CSharp OwnCode. [Строка: 14; Cтолбец: 2] Object reference not set to an instance of an object.
версия 5.34.0.0

Подскажите что не так?
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Подскажите что не так?
Необходимо делать отладку абсолютно каждого элемента на странице, к которому происходит обращение. В вашем случае, у элемента может не быть атрибута href.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 516
Благодарностей
3 369
Баллы
113
Выполнение действия CSharp OwnCode. [Строка: 14; Cтолбец: 2] Object reference not set to an instance of an object.
версия 5.34.0.0

Подскажите что не так?
У вас проблема в ошибке описана - где-то переменная равна null, так как вы не делаете проверок.
 

Salvation

Новичок
Регистрация
23.02.2019
Сообщения
10
Благодарностей
2
Баллы
3
Спасибо за советы, проблема была в том, что в отличии от сниппета автора, я убрал
instance.ActiveTab.Navigate(" ");
instance.ActiveTab.WaitDownloading();
почему то мне показалось, что обращения instance.ActiveTab.FindElementsByXPath будет достаточно
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)