HTMLのダウンロードとパーズ

HTMLのダウンロード

左の図のようなフォームを作成し、ボタンクリックのイベントハンドラに下記のコードを追加すると、textBox1に設定されたURLからファイルをダウンロードし、内容をtextBox2に表示します。

// httpでHTMLを取得
HttpWebRequest webRequest =
                    (HttpWebRequest)WebRequest.Create(textBox1.Text);
HttpWebResponse webResponse =
                    (HttpWebResponse)webRequest.GetResponse();
StreamReader streamReader = new StreamReader(
                    webResponse.GetResponseStream(), Encoding.UTF8);
try
{
    this.textBox2.Text = streamReader.ReadToEnd();
}
catch
{
    MessageBox.Show("例外が発生しました。");
}
streamReader.Close();

HTMLのパーズ

.NET FrameworkにはHTMLをパーズする機能は備わっていないため、Majestic-12C# HTML parser (.NET)を使用します。
ボタンのイベントハンドラに、以下のコードを追加すると、読み込んだHTMLを解析し、titleタグの内容をtextBox3に表示します。

HTMLparser parser = new HTMLparser();
parser.Init(textBox2.Text);
HTMLchunk chunk = null;
bool isTitle = false;
while ((chunk = parser.ParseNext()) != null)
{
    if (chunk.oType == HTMLchunkType.OpenTag)
    {
        if (chunk.sTag.Length == 5 && chunk.sTag == "title")
        {
            if (!isTitle)
            {
                isTitle = true;
            }
        }
    }
    else if (chunk.oType == HTMLchunkType.CloseTag)
    {
        if (chunk.sTag.Length == 5 && chunk.sTag == "title")
        {
            if (isTitle)
            {
                isTitle = false;
                break;
            }
        }
    }
    else if (chunk.oType == HTMLchunkType.Text)
    {
        if (isTitle)
        {
            this.textBox3.Text = chunk.oHTML;
        }
    }
}