2017.11.23
2020.1.7

HTMLを読み込んで解析する(Html Agility Pack)

C#でHTMLファイルをXPATHのような形式で取得したり、取得した要素の内容を書き換えたりする場合、Html Agility Pack (HAP)というライブラリを利用するのが一般的のようなので使ってみました。

目次

  • 準備
  • ローカルのHTMLファイルを解析
  • HTML文字列を解析
  • WebページのURLを指定して解析
  • 参考リンク

準備

NuGetパッケージマネージャーから「HtmlAgilityPack」で検索して、一番上にヒットしたライブラリをインストールします。

ローカルのHTMLファイルを解析

指定したローカルのHTMLファイルからすべての<div>要素を検索する場合のコードは以下の通りです。


var doc = new HtmlDocument();
doc.Load(@"c:\temp\index.html");

var nodes = doc.DocumentNode.SelectNodes("//div");
foreach (var node in nodes){
    Console.WriteLine(node.Name);
}

HTML文字列を解析

HTMLの文字列を解析する場合のコードは以下の通りです。


var doc = new HtmlDocument();
doc.LoadHtml(@"
<div>a</div>
<div>b</div>
<div>c</div>
");

var nodes = doc.DocumentNode.SelectNodes("//div");
foreach (var node in nodes){
    Console.WriteLine(node.Name);
}

WebページのURLを指定して解析

Webサイト上のURLを指定して解析する場合は以下のようになります。


HtmlWeb web = new HtmlWeb();
var doc = web.Load("http://localhost/index.html");

var nodes = doc.DocumentNode.SelectNodes("//div");
foreach (var node in nodes){
    Console.WriteLine(node.Name);
}

参考リンク

C#】関連記事