Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用HtmlAgilityPack访问此表的tr?_C#_Html_.net_Xml_Html Agility Pack - Fatal编程技术网

C# 如何使用HtmlAgilityPack访问此表的tr?

C# 如何使用HtmlAgilityPack访问此表的tr?,c#,html,.net,xml,html-agility-pack,C#,Html,.net,Xml,Html Agility Pack,因此,我目前正在研究HtmlagiltyPack,试图了解如何遍历XML文档(如HTML文档),以了解其工作原理和流程 我选择的网站就是这个 我想做的是抓住特色列表的标题 但我偶然发现了一个问题 我设法找到了所有的特色表,但现在我想深入到当前的表中,找到它的tr,其中包含类说明 这就是我目前所拥有的 private static string URL = "https://www.kijiji.ca/b-renovation-contracting-handyman/ontario/home-r

因此,我目前正在研究HtmlagiltyPack,试图了解如何遍历XML文档(如HTML文档),以了解其工作原理和流程

我选择的网站就是这个

我想做的是抓住
特色
列表的标题 但我偶然发现了一个问题

我设法找到了所有的
特色表
,但现在我想深入到当前的表中,找到它的
tr
,其中包含类
说明

这就是我目前所拥有的

private static string URL = "https://www.kijiji.ca/b-renovation-contracting-handyman/ontario/home-renovations/k0c753l9004";
        private static HtmlWeb client = new HtmlWeb();
        static void Main(string[] args)
        {
            var DOM = client.Load(URL);
            var Featured = DOM.DocumentNode.SelectNodes("//table[contains(@class,'top-feature')]");
            foreach (var Listing in Featured)
            {

            }
        }
有几件事我想知道,首先,我在上面问了一件事,如何潜得更深,还有

我这里有什么。 清单实际上包含什么,它是否包含所有的子节点?我猜在这种情况下,这将是
tbody
查看此文件以供参考。


或者它会包含所有的子节点,不仅包括
tbody
,而且还包括
tr
&
td

这个例子怎么样:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(@"<html><body><p><table id=""foo""><tr><th>hello</th></tr><tr><td>world</td></tr></table></body></html>");
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table")) {
Console.WriteLine("Found: " + table.Id);
foreach (HtmlNode row in table.SelectNodes("tr")) {
    Console.WriteLine("row");
    foreach (HtmlNode cell in row.SelectNodes("th|td")) {
        Console.WriteLine("cell: " + cell.InnerText);
    }
}
}
HtmlDocument doc=新的HtmlDocument();
doc.LoadHtml(@“helloworld”);
foreach(doc.DocumentNode.SelectNodes(“//表”)中的HtmlNode表){
Console.WriteLine(“找到:+table.Id”);
foreach(表中的HtmlNode行。SelectNodes(“tr”)){
控制台。写入线(“行”);
foreach(第行中的HtmlNode单元格。选择节点(“th | td”)){
Console.WriteLine(“cell:+cell.InnerText”);
}
}
}
请注意,如果需要,可以使用LINQ to对象使其更美观:

var query = from table in doc.DocumentNode.SelectNodes("//table").Cast<HtmlNode>()
        from row in table.SelectNodes("tr").Cast<HtmlNode>()
        from cell in row.SelectNodes("th|td").Cast<HtmlNode>()
        select new {Table = table.Id, CellText = cell.InnerText};

foreach(var cell in query) {
Console.WriteLine("{0}: {1}", cell.Table, cell.CellText);
}
var query=来自doc.DocumentNode.SelectNodes(“//表”).Cast()中的表
从表中的行中选择节点(“tr”).Cast()
从第行的单元格中选择节点(“th|td”).Cast()
选择新{Table=Table.Id,CellText=cell.InnerText};
foreach(查询中的变量单元格){
WriteLine(“{0}:{1}”,cell.Table,cell.CellText);
}