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);
上記のサンプルコードを実行すると、サイトのタイトルが取得できます。
これからも酢ろぐ!をよろしくお願いします。
関連記事
このブログでHtml Agility Packについて取り扱った記事をピックアップしました。