使用C#解析HTML和计数标签

use*_*861 1 html c# tags count

假设我在字符串中有一个HTML块:

<div class="nav mainnavs">
    <ul>
        <li><a id="nav-questions" href="/questions">Questions</a></li>
        <li><a id="nav-tags" href="/tags">Tags</a></li>
        <li><a id="nav-users" href="/users">Users</a></li>
        <li><a id="nav-badges" href="/badges">Badges</a></li>
        <li><a id="nav-unanswered" href="/unanswered">Unanswered</a></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

如何解析HTML并计算特定类型标记的实例数,例如<div><li>

Bro*_*ass 8

您可以使用HtmlAgilityPack - 最新版本支持Linq所以这很简单:

对于本地html文件:

HtmlDocument doc = new HtmlDocument();
doc.Load(@"test.html");
int liCount = doc.DocumentNode.Descendants("li").Count(); //returns 5
Run Code Online (Sandbox Code Playgroud)

来自网络:

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://stackoverflow.com");
int liCount = doc.DocumentNode.Descendants("li").Count();
Run Code Online (Sandbox Code Playgroud)