首页 > 解决方案 > HtmlAgilityPack - 从表中选择 td 属性

问题描述

我正在尝试从该站点获取作者姓名获取作者姓名.. 该站点仅显示 25 行的结果.. 每行包含不同的信息,例如作者姓名、标题 ...等

我尝试了很多解决方案来为每个 tr 选择作者姓名 .. 但未能检索到作者姓名 .. 如果有人可以帮助我知道我错过了什么,这是我的代码!

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;

            }
        }

我想获取每行的作者姓名,这张照片准确地解释了我想要的内容:

在此处输入图像描述

我试图调试代码..它在 foreach 之前表现良好,它显示它有 25 行结果,然后当 foreach 开始执行时它没有显示预期的结果或值。

标签: c#asp.net-mvchtml-agility-pack

解决方案


尝试使用:

   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;

推荐阅读