Foros del Web » Programación para mayores de 30 ;) » .NET »

GetElementsByTagName

Estas en el tema de GetElementsByTagName en el foro de .NET en Foros del Web. Saludos Mi problema viene dado, porque quiero obtener datos de una tabla en html, especificamente esta http://subefotos.com/ver/?225e5eb9213eb8af16ecc99cdd41dbc8o.png El codigo html es Código HTML: <table id= ...
  #1 (permalink)  
Antiguo 23/12/2014, 18:59
 
Fecha de Ingreso: diciembre-2014
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
GetElementsByTagName

Saludos
Mi problema viene dado, porque quiero obtener datos de una tabla en html, especificamente esta

http://subefotos.com/ver/?225e5eb9213eb8af16ecc99cdd41dbc8o.png

El codigo html es

Código HTML:
<table id="ressources" cellpadding="1" cellspacing="1">
<thead><tr><th colspan="6">Resources</th></tr>
<tr>
<td>Village</td><td><img class="r1" src="assets/x.gif" title="" alt=""></td><td><img class="r2" src="assets/x.gif" title="" alt=""></td><td><img class="r3" src="assets/x.gif" title="" alt=""></td><td><img class="r4" src="assets/x.gif" title="" alt=""></td><td>Merchants</td>
</tr>

</thead><tbody>
<tr><td class="link"><div><a href="village1.php?vid=5200">asdaf</a></div></td><td>963106</td><td>923677</td><td>878213</td><td style="color:#71d000">619917</td><td class="link"><a href="build.php?vid=5200&amp;bid=17">9/9</a></td></tr><tr><td class="link"><div><a href="village1.php?vid=3602">asdfg</a></div></td><td style="color:red">10600000</td><td style="color:red">10600000</td><td style="color:red">10600000</td><td style="color:red">10600000</td><td class="link"><a href="build.php?vid=3602&amp;bid=17">20/20</a></td></tr><tr><td class="link"><div><a href="village1.php?vid=4400">dsadf</a></div></td><td>1530716</td><td>1099873</td><td>1133304</td><td>2614190</td><td class="link"><a href="build.php?vid=4400&amp;bid=17">17/17</a></td></tr><tr><td class="link"><div><a href="village1.php?vid=4003">dsagd</a></div></td><td>2019009</td><td>951147</td><td>951175</td><td style="color:#71d000">2269475</td><td class="link"><a href="build.php?vid=4003&amp;bid=17">20/20</a></td></tr><tr><td class="link"><div><a href="village1.php?vid=157607">fdsag</a></div></td><td>1144237</td><td>1144209</td><td>1144292</td><td>2039242</td><td class="link"><a href="build.php?vid=157607&amp;bid=17">20/20</a></td></tr><tr><td class="link"><div><a href="village1.php?vid=153996">fdsaii</a></div></td><td>1746936</td><td>1967800</td><td style="color:#71d000">1528383</td><td>1947881</td><td class="link"><a href="build.php?vid=153996&amp;bid=17">20/20</a></td></tr><tr><td class="link"><div><a href="village1.php?vid=153998">fdsall</a></div></td><td>1171705</td><td>1366864</td><td>976488</td><td>1873271</td><td class="link"><a href="build.php?vid=153998&amp;bid=17">20/20</a></td></tr><tr><td class="link"><div><a href="village1.php?vid=4000">sdafg</a></div></td><td>1131419</td><td>923637</td><td>942804</td><td>2794773</td><td class="link"><a href="build.php?vid=4000&amp;bid=17">15/15</a></td></tr><tr><td class="link"><div><a href="village1.php?vid=4001">sdafg</a></div></td><td>1051013</td><td>875790</td><td>875790</td><td>1887032</td><td class="link"><a href="build.php?vid=4001&amp;bid=17">20/20</a></td></tr><tr><td colspan="6" class="empty"></td></tr><tr class="sum"><th>Total amount</th><td>21358141</td><td>19852997</td><td>19030449</td><td>26645781</td><td>161/161</td></tr></tbody></table> 
Y el codigo que uso es este

Código:
 Try
            Dim recursos As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("tbody")
            For Each cereal As HtmlElement In recursos

                If cereal.GetAttribute("class").Contains("link") = False Then
                    ListBox2.Items.Add(cereal.InnerText)
                End If
            Next


        Catch

        End Try
Pero luego me arroja este resultado

[url=http://subefotos.com/ver/?738e92414d962d0e28d121986126e647o.png] [img]http://thumbs.subefotos.com/738e92414d962d0e28d121986126e647o.jpg[/img][/url]

Mi problema es que por mas que trate de cambiarlo, con cualquier control me aparece el resultado junto, quiero ordenar los recursos y no se como, todo me lo muestra unido
  #2 (permalink)  
Antiguo 24/12/2014, 06:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: GetElementsByTagName

A mi entender estás recorriendo los objetos Html, pero no el contenido del objeto buscado.

Deberías leer un poco más de la documentación oficial:
http://msdn.microsoft.com/es-AR/libr...=vs.90%29.aspx
http://msdn.microsoft.com/es-es/libr...8VS.90%29.aspx

En esencia: Tienes que obtener el objeto HtmlTable y luego recorrerlo para buscar lo que necesitas. No lo tomas entero para ponerlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/12/2014, 20:06
 
Fecha de Ingreso: diciembre-2014
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
De acuerdo Respuesta: GetElementsByTagName

Cita:
Iniciado por gnzsoloyo Ver Mensaje
A mi entender estás recorriendo los objetos Html, pero no el contenido del objeto buscado.

Deberías leer un poco más de la documentación oficial:
[url]http://msdn.microsoft.com/es-AR/library/system.windows.forms.htmlelement%28v=vs.90%29.aspx[/url]
[url]http://msdn.microsoft.com/es-es/library/2962t2k8%28VS.90%29.aspx[/url]

En esencia: Tienes que obtener el objeto HtmlTable y luego recorrerlo para buscar lo que necesitas. No lo tomas entero para ponerlo.
Lo solucione con el siguiente codigo, usando el control listview

Código:
'get header information
        Dim headerColumns = WebBrowser1.Document.GetElementsByTagName("thead")(0).Children(1).Children

        'loop each element, if there is no innertext (some cols use GIF) then pull the class name
        For Each childElement As HtmlElement In headerColumns

            Dim columnName As String = String.Empty
            If childElement.InnerHtml.Contains("class=") Then
                columnName = childElement.InnerHtml.Substring(20, 2).ToUpper()
            Else
                columnName = childElement.InnerText
            End If

            'add columns to listview
            ListView1.Columns.Add(columnName)
        Next


        'now pull all values
        Dim childrenColumns = WebBrowser1.Document.GetElementsByTagName("tbody")(0).Children

        For Each childRowElement As HtmlElement In childrenColumns
            Dim lvItem As New ListViewItem
            lvItem.Text = childRowElement.Children(0).InnerText

            If childRowElement.Children.Count <> 6 Then Continue For

            lvItem.SubItems.Add(childRowElement.Children(1).InnerText)
            lvItem.SubItems.Add(childRowElement.Children(2).InnerText)
            lvItem.SubItems.Add(childRowElement.Children(3).InnerText)
            lvItem.SubItems.Add(childRowElement.Children(4).InnerText)
            lvItem.SubItems.Add(childRowElement.Children(5).InnerText)
            ListView1.Items.Add(lvItem)
        Next childRowElement

Etiquetas: visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:41.