HTMLを読み込んで解析する(Html Agility Pack)
C#でHTMLファイルをXPATHのような形式で取得したり、取得した要素の内容を書き換えたりする場合、Html Agility Pack (HAP)というライブラリを利用するのが一般的のようなので使ってみました。
目次
- 準備
- ローカルのHTMLファイルを解析
- HTML文字列を解析
- WebページのURLを指定して解析
- 参考リンク
準備
ローカルの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);
}