HtmlAgilityPack ChildNodes跳过标签<menu>

时间:2016-05-18 15:57:09

标签: c# html

我试图解析网站 我需要在

中获取所有菜单元素
string Url = "http://r-hockey.ru/";

var web = new HtmlWeb
{
    AutoDetectEncoding = false,
    OverrideEncoding = Encoding.GetEncoding(1251),
};

HtmlAgilityPack.HtmlDocument doc = web.Load(Url);

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//td[@style='margin-left: 5px; vertical-align: top;'][@width='80%']");

if (nodes != null && nodes.Count == 1)
{
    var menuList = nodes.First();
    var list = menuList.ChildNodes.ToArray();
    ...
}

我无法将菜单元素添加到列表中。 但它们位于 menuList.Descendants()中。 如果我使用jquery,我会把它们当作孩子。

$("td[style='margin-left: 5px; vertical-align: top;'][width='80%']").children();

显然,我的HTML解析错了而且我不明白,为什么。请帮我。 我可以从 menuList.Descendants()获取菜单标签,但我需要按照正确的顺序在绿点和菜单数据之后存储大写文本。

2 个答案:

答案 0 :(得分:0)

我刚试过你的代码,它运行正常。你在列表中得到了什么?

答案 1 :(得分:0)

我正在使用谷歌浏览器以及我在&#34; Inspect&#34;中看到的结构。与查看页面来源&#34;中的不一样。 所以在我的文档中菜单实际上是 td table 标记的子代。 在我修改之后,一切都按照预期工作:

_.uniqWith(list, _.isEqual);