HtmlAgilityPack - Выбрать атрибут td из таблицы - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь получить имя автора с этого сайта .. Сайт просто показывает результат 25 строк. Каждая строка содержит различную информацию, такую ​​как имя автора, название ... и т. Д.

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

var documentx = new HtmlWeb().Load(post.ExtLink);
        var div = documentx.DocumentNode.SelectNodes("//*//table[2]//tr");
        if (div != null)
        {
            foreach (var item in div)
            {
                Book model = new Book();
                var author= item.SelectSingleNode("//td[1]//a").InnerText.ToString();

                //var title = item.SelectNodes("//td").Skip(2).FirstOrDefault().InnerText;
                //var img = item.Descendants("img").Select(a1 => a1.GetAttributeValue("src", null)).FirstOrDefault();

                model.Book_Description = author;

            }
        }

Я хочу получить имя автора для каждой строки, эта фотография объясняет, что именно я хочу:

enter image description here

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

1 Ответ

0 голосов
/ 27 февраля 2019

Попробуйте использовать:

   var div = documentx.DocumentNode.SelectNodes("//*//table[3]//tr");

вместо:

    var div = documentx.DocumentNode.SelectNodes("//*//table[2]//tr");

и используйте его так:

var author = item.ChildNodes[0].InnerText;
var series = item.ChildNodes[1].InnerText;
var title = item.ChildNodes[2].InnerText;
...