読者です 読者をやめる 読者になる 読者になる

備忘録

備忘録

C# で HtmlAgilityPack を使って HTML の要素値を XPath で取得する

Ⅰ. はじめに

タイトルの通り、「C# で HtmlAgilityPack を使って HTML の要素値を XPath で取得する」方法です。
Web スクレイピングが簡単になります。

Ⅱ. サンプル

f:id:kagasu:20170501191818p:plain
http://example.comの「タイトル」と「リンク先(href)の値」を取得するサンプルです。

1. NuGet で HtmlAgilityPack をインストールする

.NET Standard で作られている物が NuGet にリリースされていますが公式リリースではないように思えます。

2. コードを書く

static void Main(string[] args)
{
  var str = new HttpClient().GetStringAsync("http://example.com/").Result;

  var html = new HtmlDocument();
  html.LoadHtml(str);

  var title = html.DocumentNode.SelectSingleNode("/html/body/div/h1");
  Console.WriteLine(title.InnerText);

  var link = html.DocumentNode.SelectSingleNode("/html/body/div/p[2]/a");
  Console.WriteLine(link.Attributes["href"].Value);
}

3. 実行結果

f:id:kagasu:20170501192039p:plain

※2017/05/24 追記
http://example.com の HTML が変わるとサンプルの意味が無くなるので、
念のため http://example.com のバックアップをとっておきました。
https://gist.github.com/anonymous/e325a74047edab47a2cf6ccdef60af95