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-12のC# 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; } } }