c# - 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 开始执行时它没有显示预期的结果或值。
解决方案
尝试使用:
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;
推荐阅读
- logging - 安装日志中的覆盖标志表示什么?
- laravel - Laravel - 使用 DB Raw 仅从 created_at 中提取时间
- arrays - 如何在 Swift4.2 中检查我的数组是否有 Value 和超过 Value 的值?
- javascript - 如何将 HTTP 请求映射或关联到 Node.js 中的 db 调用?
- email - Outlook 向用户显示电子邮件图像
- javascript - 如何使用多个演出前功能django?
- python - f1-score always ~0.75?
- javascript - Typescript classes bundle with webpack
- python - 将两个 csv 文件的值和结果相加到一个新文件中
- elasticsearch - Elasticsearch bool must query