gpt4 book ai didi

c# - HtmlAgilityPack - 如何读取特定表格 - c# 4.0

转载 作者:太空狗 更新时间:2023-10-29 22:11:09 27 4
gpt4 key购买 nike

使用 c# 4.0 和 htmlagilitypack 我如何读取特定表中的值。我的意思是假设有 10 个表,我想从第 6 个表中读取值,或者我有表 ID。

或者说我想读取某个 td 之后的 td 值。

或表格位于特定的 div 或元素或文本之后。这些可能吗?

最佳答案

您所询问的一切都可以相对容易地完成。它的文档可能缺少并不重要,它在使用和功能上应该类似于 XML 和网络的 XmlDocument 实现。

How can I read values inside certain table? Let's say there are 10 tables and I want to read values from 6th or I have table id.

找到第 6 个表:

// XPath
var table6 = doc.DocumentNode.SelectSingleNode("//table[6]");

// LINQ
var table6 = doc.DocumentNode.Descendants("table").Skip(5).FirstOrDefault();

通过 id 查找表/元素:

var myTable = doc.GetElementById("myTable");

// XPath
var myTable = doc.DocumentNode.SelectSingleNode("//table[@id='myTable']");
var myTable = doc.DocumentNode.SelectSingleNode("//*[@id='myTable']");

// LINQ
var myTable = doc.DocumentNode
.Descendants("table")
.Where(table => table.Attributes.Contains("id"))
.SingleOrDefault(table => table.Attributes["id"].Value == "myTable");
var myTable = doc.DocumentNode
.Descendants()
.Where(e => e.Attributes.Contains("id"))
.SingleOrDefault(e => e.Attributes["id"].Value == "myTable");
var myTable = doc.DocumentNode
.Descendants("table")
.SingleOrDefault(table => table.GetAttributeValue("id", null) == "myTable");
var myTable = doc.DocumentNode
.Descendants()
.SingleOrDefault(e => e.GetAttributeValue("id", null) == "myTable");

Let's say I want to read td value coming after certain td.

// XPath
var certainTd = table6.SelectSingleNode("//td[2]");
var tdAfterCertainTd = certainTd.SelectSingleNode("following-sibling::td[1]");

// LINQ (not so easy)
var certainTd = table6.Descendants("td").Skip(1).FirstOrDefault();
var tdAfterCertainTd = certainTd.NextSibling;
while (tdAfterCertainTd != null)
{
if (tdAfterCertainTd.Name == "td")
break;
tdAfterCertainTd = tdAfterCertainTd.NextSibling;
}

Table coming after certain div or element or text.

// XPath
var certainDiv = doc.DocumentNode.SelectSingleNode("//div[1]");
var tableAfterCertainDiv = certainDiv.SelectSingleNode("following-sibling::table[1]");

// LINQ (not so easy)
var certainDiv = doc.DocumentNode.Descendants("div").FirstOrDefault();
var tableAfterCertainDiv = certainDiv.NextSibling;
while (tableAfterCertainDiv != null)
{
if (tableAfterCertainDiv.Name == "table")
break;
tableAfterCertainDiv = tableAfterCertainDiv.NextSibling;
}

您应该注意到一些模式。

关于c# - HtmlAgilityPack - 如何读取特定表格 - c# 4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com