在 .NET 平台下,有非常多优秀的 HTML 解析库,其中具有代表性的是 Html Agility Pack,简称 HAP。引用官方的自述:

HAP is an HTML parser written in C# to read/write DOM and supports plain XPATH or XSLT.

使用 XPATH 来获取目标文本可以让程序简洁明了,例如,现在获取博客右栏的最新文章列表:

using HtmlAgilityPack;

var httpClient = new HttpClient();
var homePage = await httpClient.GetStringAsync("http://jueding.top/");

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(homePage);

var hotPostNodes = htmlDoc.DocumentNode.SelectNodes("//div[@id=\"widget-tabs-4-hots\"]//li//h4");
var hotPostTitles = from hotPostNode in hotPostNodes select hotPostNode.InnerText.Trim();

Console.WriteLine("Host Post Title: ");
Console.WriteLine(String.Join("\n", hotPostTitles));

下面通过几个例子,简单说明 XPATH 使用:

  • // 表示相对位置,/ 表示相对位置
  • //div[@id="home"] 表示 id 为 home 的 div 元素
  • //a[@class="btn btn-dark"] 表示 class 为 btn btn-dark 的 a 元素

PS:在浏览器页面中打开上下文菜单,进入 审查元素(检查) 项,然后使用快捷键 Ctrl+F 进行搜索,即可测试 XPATH。

最后修改:2022 年 04 月 12 日
如果觉得我的文章对你有用,请随意赞赏