Webページからいろいろ抜き出して表示したりしたい。

タグの編集
投稿者 LOTUS  (社会人) 投稿日時 2011/2/7 21:22:31
VB中学校様にはいつもお世話になっております。
初級講座を大体抑えたのでそろそろ新しいステップへ踏み出したいな、と思っていました。
そこで思いついたのが「Webページを弄る」ことでした。

例えば教えてgoo のようなサイトで置き換えると

1.URLを入力
2.質問内容と回答内容を取得
3.それぞれTextboxに出力

のようなことをしたいです。
こういった一例に限らず、VBにおけるWeb関連の構文等を詳しく勉強するためにはどのような書籍・サイトあるいはその他があるでしょうか。

稚拙で長々しい文章ではご回答よろしくお願いします。
投稿者 LOTUS  (社会人) 投稿日時 2011/2/7 22:21:55
少しわかりました。

    Dim URL As String = TextBox1.Text
    Dim wc As WebClient = New WebClient()

    Dim st As Stream = wc.OpenRead(URL)

    Dim enc As Encoding = Encoding.GetEncoding("Shift_JIS")
    Dim sr As StreamReader = new StreamReader(st, enc)
    Dim html As string = sr.ReadToEnd()
    sr.Close()

    st.Close()


これでTextBox1のソースコードが取得できるみたいです。
取得した後そのコードをいろいろ弄るようにしたいです。
投稿者 LOTUS  (社会人) 投稿日時 2011/2/7 22:41:22
どうやらここからはWeb関係ないみたいですね。
取得したソースコードの中から<body>~</body>を抜き出す場合どうすればいいんでしょうか。
投稿者 YAS  (社会人) 投稿日時 2011/2/7 23:43:30
>取得したソースコードの中から<body>~</body>を抜き出す場合どうすればいいんでしょうか。 

非表示のWebBrowserで読み込んでから,DOMから取得してみてはどうでしょうか。
投稿者 LOTUS  (社会人) 投稿日時 2011/2/8 20:58:01
Webbrowserを非表示で使う場合VisibleをFalseにするだけでいいのでしょうか。
無駄が多い感じがするのですが・・・

とりあえずソースの取得はYASさんのかげで簡単にできました。

Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = WebBrowser1.Document.Body.OuterHtml
    End Sub


こんな感じでテキストボックスに表示できました。
DOMとはなんでしょうか。
しらべてもjavascript関連しかヒットしません・・・
投稿者 LOTUS  (社会人) 投稿日時 2011/2/8 21:22:53
Dim r As New System.Text.RegularExpressions.Regex( _
            "<body>(.*?)</body>", _
            System.Text.RegularExpressions.RegexOptions.IgnoreCase)

        'TextBox1.Text内で正規表現と一致する対象を1つ検索  
        Dim m As System.Text.RegularExpressions.Match = r.Match(TextBox1.Text)

        '次のように一致する対象をすべて検索することもできる  
        'Dim mc As System.Text.RegularExpressions.MatchCollection = _ 
        '    r.Matches(TextBox1.Text) 


        While m.Success
            '一致した対象が見つかったときキャプチャした部分文字列を表示  
            MessageBox.Show(m.Value)
            '次に一致する対象を検索  
            m = m.NextMatch()
        End While


このコードで無事抜き出せました。
質問なのですが、正規表現における(.*?)とはどういう意味でしょうか。
投稿者 LOTUS  (社会人) 投稿日時 2011/2/8 21:24:08
度々すみません

自己解決しました