【问题标题】:HtmlAgilityPack - Select td Attribute from TableHtmlAgilityPack - 从表中选择 td 属性
【发布时间】:2019-02-27 18:16:01
【问题描述】:

我正在尝试从此site 获取作者姓名。该站点仅显示 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-mvc html-agility-pack


    【解决方案1】:

    尝试使用:

       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;
    

    【讨论】:

    • 感谢您的尝试.. 实际上作者现在得到了一个价值.. 但标题没有!你知道为什么吗? ...并且 table[2] 在这种情况下工作不是 3
    • 对我来说效果很好。作者、系列和标题均采用网站上的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2020-02-22
    • 2012-07-29
    • 2018-05-26
    相关资源
    最近更新 更多