C# 如何使用HtmlAgilityPack访问此表的tr?
因此,我目前正在研究HtmlagiltyPack,试图了解如何遍历XML文档(如HTML文档),以了解其工作原理和流程 我选择的网站就是这个 我想做的是抓住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
特色
列表的标题
但我偶然发现了一个问题
我设法找到了所有的特色表
,但现在我想深入到当前的表中,找到它的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);
}