如何使用HTML敏捷包解析HTML

本文关键字:HTML 包解析 何使用 | 更新日期: 2023-09-27 18:24:18

我使用regex解析HTML,但有些文章说HTMLAgilityPack要容易得多。对我来说,最大的问题是如何解析这个示例(twitter)的html:

这是HTML代码:

<p class="js-tweet-text tweet-text"> What an awesome day! Adventure nanaman kahapon <a href="http" data-query-source="hashtag_click" class="twitter-hashtag pretty-link js-nav" dir="ltr"><s>#</s><b><strong>ondoy</strong></b></a> <a href="https://twitter.com/search?q=%23eurotel&src=hash" data-query-source="hashtag_click" class="twitter-hashtag pretty-link js-nav" dir="ltr"><s>#</s><b>eurotel</b></a> <a href="https://twitter.com/search?q=%23retail&src=hash" data-query-source="hashtag_click" class="twitter-hashtag pretty-link js-nav" dir="ltr"><s>#</s><b>retail</b></a> <a href="https://twitter.com/search?q=%23family&src=hash" data-query-source="hashtag_click" class="twitter-hashtag pretty-link js-nav" dir="ltr"><s>#</s><b>family</b></a></p>

我想让它像这样输出:

"多么棒的一天!冒险nanaman kahabon#ondoy#eurotel#retail#family"

我该如何解析那个html代码。我现在使用的是regex,但它显示其他标记,如href。

这是我的正则表达式代码。

           WebClient web = new WebClient(); 
           string html = web.DownloadString(filename);
            MatchCollection m1 = Regex.Matches(html, "<p class='"js-tweet-text tweet-text'">''s*(.+?)''s*</p>", RegexOptions.Singleline);
            foreach (Match m in m1)
            {
                MessageBox.Show(m.Groups[1].Value);
            }

如何使用HTML敏捷包解析HTML

     HtmlWeb p = new HtmlWeb();
     var doc= p.Load(@"link your HTML page");
     var node =  doc.DocumentNode.SelectNodes("//p[@class='js-tweet-text tweet-text']").FirstOrDefault();
     if (node != null)
     {
       Console.WriteLine(node.InnerText);
     }

我刚自己测试过,这个能打印出

What an awesome day! Adventure nanaman kahapon #ondoy #eurotel #retail #family"

请注意,如果您要在实际的推特页面上运行这段代码,将会有多条推文,因此您需要对上面发布的代码进行一些修改。但这应该会给你一个如何使用它的好主意。