htmlagilitypack select nodes return null

c# html-agility-pack linq select

Вопрос

Я использовал этот код, чтобы получить информацию о странице. Но теперь сайт изменился, и мое приложение возвращает ошибку null.

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);
var query = doc.DocumentNode
  .SelectNodes("//table[@class='table table-striped table-hover']/tr")
  .Select(r => {
    return new DelegationLink()
    {
        Row = r.SelectSingleNode(".//td").InnerText,
        Category = r.SelectSingleNode(".//td[2]").InnerText
    };
}).ToList();

и это мой html:

 <div role="tabpanel" class="tab-pane fade " id="tab3">
                <div class="circular-div">
    <table class="table table-striped table-hover" id="circular-table">
        <thead>
            <tr>
                <th>ردیف</th>
                <th>دسته بندی</th>
                <th>عنوان</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>بخشنامه‌ها</td>
                <td>اطلاعیه جهاد دانشگاهی</td>
            </tr>
            <tr>
                <td>2</td>
                <td>بخشنامه‌ها</td>
...
...
...

Где я ошибаюсь?

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

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

var query = doc.DocumentNode
    .SelectNodes("//table[@class='table table-striped table-hover']/tbody/tr")
    .Select(r =>
    {
        return new DelegationLink()
        {
            Row = r.InnerText,
            Category = r.SelectSingleNode(".//td[2]").InnerText
        };
    }
).ToList();


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