我需要列出特定网页中的记录。我在一个文本文件中获得了页面源代码。我需要逐个元素地遍历这个节点:
HtmlNodeCollection resultContainer = doc.DocumentNode.SelectNodes("//div[@class='result-list divider-y-5']");
对于每个元素,我需要检查类型(div,span等),它" id"而它" class"属性可以创建我的记录列表。我不想要所有s或s的集合。这无济于事,因为我不知道在循环它们时我将面对哪种元素。我得检查一下。因为我需要的所有数据都是上面提到的节点集合的子节点。有什么建议吗?
答案 0 :(得分:1)
foreach(HtmlNode node in resultContainer)
{
//check node type
switch(node.Name)
{
case "div":
{
break;
}
case "p":
{
}
///....etc
}
//get id
String id = node.Attributes["id"].Value;
//get class
String class = node.Attributes["class"].Value;
}
答案 1 :(得分:0)
我认为将HtmlAgilityPack转换为xml更容易,例如:
doc.Load(htmlStream, true);
doc.OptionOutputAsXml = true;
doc.OptionFixNestedTags = true;
doc.OptionAutoCloseOnEnd = true;
doc.Save(/* your Xml stream or filename */);
然后使用常规的.NET xml api(例如使用XmlDocument或XDocument)来处理内容。