none
tableの<td>タグの最初から最後までの値を取得できず困っています。 RRS feed

  • 質問

  • 恐れ入ります。

    テーブルタグの<td>abc</td>のabcの値を取得したいのですが

    下記のコードでは、msgboxがうまくたちあがらず困っています。

    どこが間違っているか、教えてください。

    よろしくお願い致します。

     

     

    (参照設定に System.Web を設定しています)

    Imports System.Web.UI.HtmlControls


    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            WebBrowser1.Navigate("http://up.spawn.jp/file/up25468.htm")
            Do While (WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete)
                My.Application.DoEvents()
                System.Threading.Thread.Sleep(50)
            Loop

            Dim t As HtmlTable
            Dim r As HtmlTableRow
            Dim c As HtmlTableCell


            Dim lngCno As Long, lngTno As Long

            For Each t In WebBrowser1.Document.All.GetElementsByName("table")
                lngCno = 0
                For Each r In t.Rows
                    For Each c In r.Cells
                        lngCno = lngCno + 1

                        MsgBox("【Cells(" & lngCno & ") in Tables(" & lngTno & ") innerHTML】")
                        MsgBox(c.InnerText)
                    Next c
                Next r
                lngTno = lngTno + 1

            Next t


        End Sub
    End Class

    2006年6月20日 9:28

すべての返信

  • そもそも GetElementsByName は各要素の name 属性が合致する要素を取得するメソッドです。table と言う name 属性を持った table 要素を取得したいのならそれで構いませんが、恐らく求めているのは GetElementsByTagName の方ではないでしょうか?

    System.Web 以下の名前空間は、(HttpUtility みたいなごく一部を除き)ASP.NET で使用するクラス群です。WinForm では使いません(し、使えません)。System.Windows.Forms の WebBrowser クラスとそれに関連するオブジェクトとは何の関係もないですし、キャストもできません。

    .NET 2.0 では、HTML DOM を扱うに当たって、要素に完全に一致した型(HtmlTable クラスとか)を用意していません。すべて HtmlElement 型で扱うように設計されています。

    HtmlElement から GetElementsByTagName で子孫要素(のコレクション)を取得したり、InnerText で内容を取得したりします。

    2006年6月20日 9:58
  • tdタグの中を取得したければtdタグを検索することになります。

    行や列を指定して取得する方法は申し訳ありませんが,わかりません。

    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.WebBrowser1.Navigate("http://up.spawn.jp/file/up25468.htm")
        End Sub


        Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As _
                             System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)  _
                             Handles WebBrowser1.DocumentCompleted
            For Each t As HtmlElement In WebBrowser1.Document.GetElementsByTagName("td")
                MsgBox(t.InnerText)
            Next
        End Sub

    End Class

    2006年6月21日 18:15