Home > C# > 目的別 > Web関連

ベクトルドロー・レベルゼロ

C#で、htmlからデータを取得する

広告

新規作成日 2017-10-23
最終更新日

C#で、htmlを操作することには、次の視点があります。

  • ネット上のhtmlのソースコードをC#で取得する
  • html形式の情報をC#プログラム内で表示する
  • C#でインターネットブラウザを操作する

この異なる目的を実現する手段が、混ざった状態で同じように表現されていることが多いので、情報を集める際、混乱しないように注意しましょう。

C#で、インターネット関連技術を使用するには、サーバー上で動作するアプリケーション開発を目的に提供されているASP.netやASP.net.Coreの方が、向いていると思います。

しかし、.net環境も十分んみ使いこなせていない状況で、.netに加えて、新たな開発プラットホームの情報を集めるのは、結構大きな意識的な障壁があります。

.net環境で利用できるWeb関連クラスについてまとめてみようと思います。

.netで利用できるインターネット関連クラス

デスクトップ環境のアプリケーションでもインターネットは利用します。そのため、.net環境でもきちんとしたインターネットに関連した操作をするクラスが存在します。しかし、インターネット関連技術の変化は早いため、クラスの更新ではなく、新しいクラスを追加する方法で対応したようです。そのため、複数のクラスが併存しています。

WebBrowserコントロールは、html形式の情報をC#プログラム内で表示するための仕組みです。

また、C#に用意されているものだけでなく、外部ライブラリやブラウザエンジンを使用する方法が存在します。

C#を使って、インタネット上から情報を取得するアプリケーションを作成する

これらのクラスを使用すると、インターネット上のWebページから情報を取得するプログラムを作成することができます。

C#から、ブラウザエンジンを使用するためのラッパー

ブラウザの中には、そのエンジンをプログラムで使用するためのラッパークラスが提供されているものがあります。

  • geckofx

    .NET FrameworkおよびMonoから、Firefoxで使われているGecko エンジンを扱うためのラッパークラス

  • webkit-sharp

    monoプロジェクト用のwebkitラッパ

  • WebKit.NET

    以前のGoogle ChromeやSafari、Androidなどで使われていたレンダリングエンジンです。 これを.NETから簡単に使えるようにしたライブラリがWebKit.NETです。現在のGoogle Chromeのエンジンは、Blinkにフォークしています。

また、Internet Explorer(開発終了)やMicrosoft Edge(現行)など各ブラウザをC#から操作する方法もあります。

VBAを使って、Internet Explorer(開発終了)を操作する方法についての書籍が存在します。

C#で使えうるスクレイピングツール

htmlとcssで作成されている単純な静的ページであれば、.Net Frameworkで提供されているWeb関連クラスで、簡単に使用できます。しかし、タグや属性を多用した複雑な構成のhtmlページやJavascriptやcgiで動的に作成されたページの内容を取得しようとするとき、プログラムは複雑になります。

そのようなWebページの内容に、より簡単にアクセスするためのライブラリが、パーサーです。

パーサーの使い方を理解する必要がありますが、自分で対応するプログラムを作成するよりも簡単な場合が多いと思われます。

C#で利用できるhtmlパーサーで有名なものは、以下の2つです。

  • Html Agility Pack (HAP)

    C#でHTMLをスクレイピングするためのライブラリ

  • AngleSharp

    AngleSharpは、C#開発環境で、Javascriptで広く利用されているDOM (Document Object Model)を使用して、Webページの内容を取得することができるhtmlパーサです。

  • CsQuery

    cssセレクタ

AngleSharpの方が、プロジェクトとして新しいため、より洗練されていると言われています。そこで、これから学ぶのであれば、AngleSharpの方が良い可能性があります。しかし、多くのC#のライブラリと同様に、日本語のドキュメントや日本語で書かれた紹介記事は、ほとんど存在しないので、英語のドキュメントやサンプルコード、ソースコードを読み解いて利用する必要があります。

パーサー自体は、PythonやParlなどの他の言語を使って行う情報のほうが多いので、C#を使用したパース自体あまり行われていないのかもしれません。もともと、インターネット技術は、Linuxとの相性が良いので、メインの動作環境が、WindowsであるC#では、影が薄いのは、仕方ないのかもしれません。Linux上で動作するC#環境のMoneに加えて、.Net.CoreやAsp.Net.Coreが、登場したことで、もう少し、C#でインターネットに関する選択肢が増える可能性もあります。

C#で利用できるhtmlパーサーAngleSharpを使用する

まずは、ドキュメントを読んで使い方を理解するところから始めようと思います。

このエントリーをはてなブックマークに追加

広告

Home PC C# Illustration

Copyright (C) 2011-2018 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」