酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

C#でHtml Agility Packを使ってウェブサイトのタイトルを取得する

Html Agility Packという.NET Framework向けに書かれたHTMLパーサーライブラリがあります。このライブラリはC#から利用することができます。簡単にウェブスクレイピングすることができます。

まずは最初ということで、このブログ(blog.ch3cooh.jp)のタイトルを取得してみましょう。

以下のサンプルコードでやっていることは、とても簡単でHttpClientクラスを使って取得したHTML(のストリーム)をHtmlAgilityPack.HtmlDocumentオブジェクトにLoadメソッドで読み込みDOM解析します。

あとは必要なノード(タイトルが欲しいのであればtitleタグ)を探して必要な値を取得します。

// タイトルを取得したいサイトのURL
var urlstring = "https://blog.ch3cooh.jp/";

var doc = new HtmlAgilityPack.HtmlDocument();

// 指定したサイトのHTMLをストリームで取得する
using (var client = new HttpClient())
using (var stream = await client.GetStreamAsync(new Uri(urlstring)))
{
    // HtmlAgilityPack.HtmlDocumentオブジェクトにHTMLを読み込ませる
    doc.Load(stream, Encoding.UTF8);
}

// HTMLから(複数の)titleタグを探す
var titles = doc.DocumentNode.Descendants("title");

// 最初のtitleタグのノードを取り出す
var titleNode = titles.First();

// titleタグの値(サイトのタイトルといて表示される部分)を取得する
var title = titleNode.InnerText;

Debug.WriteLine(title);

上記のサンプルコードを実行すると、サイトのタイトルが取得できます。

f:id:ch3cooh393:20141201110026p:plain

これからも酢ろぐ!をよろしくお願いします。

関連記事

このブログでHtml Agility Packについて取り扱った記事をピックアップしました。