none
Como sacar parte de este codigo html con vb.net RRS feed

  • Pregunta

  • Hola un poco de ayuda para sacar esta parte de codigo de este codigo 

    <td class="LS_Item" isrtl="0" value="mt">Maltés</td>

    html y pasarlo a dos combobox tengo que sacar mt a un combobox y maltes a otro combobox

    Gracias

    <table class="LanguageList" style="display: table;">
                    <tbody>
                            <tr>
                                        <td class="LS_Item selected" isrtl="0" value="-">Detectar automáticamente</td>
                                        <td class="LS_Item" isrtl="0" value="fr">Francés</td>
                                        <td class="LS_Item" isrtl="0" value="mt">Maltés</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="de">Alemán</td>
                                        <td class="LS_Item" isrtl="0" value="cy">Galés</td>
                                        <td class="LS_Item" isrtl="0" value="yua">Maya Yucateco</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="1" value="ar">Árabe</td>
                                        <td class="LS_Item" isrtl="0" value="el">Griego</td>
                                        <td class="LS_Item" isrtl="0" value="no">Noruego</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="bs-Latn">Bosnio (Latino)</td>
                                        <td class="LS_Item" isrtl="1" value="he">Hebreo</td>
                                        <td class="LS_Item" isrtl="0" value="otq">Otomí Querétaro</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="bg">Búlgaro</td>
                                        <td class="LS_Item" isrtl="0" value="hi">Hindi</td>
                                        <td class="LS_Item" isrtl="1" value="fa">Persa</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="ca">Catalán</td>
                                        <td class="LS_Item" isrtl="0" value="mww">Hmong Daw</td>
                                        <td class="LS_Item" isrtl="0" value="pl">Polaco</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="cs">Checo</td>
                                        <td class="LS_Item" isrtl="0" value="nl">Holandés</td>
                                        <td class="LS_Item" isrtl="0" value="pt">Portugués</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="zh-CHS">Chino simplificado</td>
                                        <td class="LS_Item" isrtl="0" value="hu">Húngaro</td>
                                        <td class="LS_Item" isrtl="0" value="ro">Rumano</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="zh-CHT">Chino tradicional</td>
                                        <td class="LS_Item" isrtl="0" value="id">Indonesio</td>
                                        <td class="LS_Item" isrtl="0" value="ru">Ruso</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="ko">Coreano</td>
                                        <td class="LS_Item" isrtl="0" value="en">Inglés</td>
                                        <td class="LS_Item" isrtl="0" value="sr-Cyrl">Serbio (Cirílico)</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="ht">Criollo Haitiano</td>
                                        <td class="LS_Item" isrtl="0" value="it">Italiano</td>
                                        <td class="LS_Item" isrtl="0" value="sr-Latn">Serbio (Latino)</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="hr">Croata</td>
                                        <td class="LS_Item" isrtl="0" value="ja">Japonés</td>
                                        <td class="LS_Item" isrtl="0" value="sv">Sueco</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="da">Danés</td>
                                        <td class="LS_Item" isrtl="0" value="sw">Kiswahili</td>
                                        <td class="LS_Item" isrtl="0" value="th">Tailandés</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="sk">Eslovaco</td>
                                        <td class="LS_Item" isrtl="0" value="tlh">Klingon</td>
                                        <td class="LS_Item" isrtl="0" value="tr">Turco</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="sl">Esloveno</td>
                                        <td class="LS_Item" isrtl="0" value="tlh-Qaak">Klingon (pIqaD)</td>
                                        <td class="LS_Item" isrtl="0" value="uk">Ucraniano</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="es">Español</td>
                                        <td class="LS_Item" isrtl="0" value="lv">Letón</td>
                                        <td class="LS_Item" isrtl="1" value="ur">Urdu</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="et">Estonio</td>
                                        <td class="LS_Item" isrtl="0" value="lt">Lituano</td>
                                        <td class="LS_Item" isrtl="0" value="vi">Vietnamita</td>
                            </tr>
                            <tr>
                                        <td class="LS_Item" isrtl="0" value="fi">Finlandés</td>
                                        <td class="LS_Item" isrtl="0" value="ms">Malayo</td>
                            </tr>
                    </tbody>
                </table>

    miércoles, 30 de marzo de 2016 7:12

Todas las respuestas

  • Hola,

    si lo que quieres coger son los datos de la etiqueta "value" y los textos en negro, prueba con este código:

    Public Class Form1

    'suponemos que el combobox1 es el de la etiqueta "value", y el combobox2 es el innertext(texto en negro) Private WithEvents webbrowser1 As New WebBrowser 'nuevo webbrowser por código, para que sea invisible y puedas coger los datos Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click webbrowser1.Navigate("El url que te lleva a este código") 'el webbrowser1 navegará a la página que le pongas End Sub Private Sub webbrowser1_documentcompleted(sender As Object, e As EventArgs) Handles webbrowser1.DocumentCompleted 'cuando el documento se haya cargado Try For Each etiqueta As HtmlElement In webbrowser1.Document.All If etiqueta.GetAttribute("CLASSNAME").Contains("LS_Item selected") Then 'si la etiqueta class contiene "LS_Item selected" (si es "detectar automáticamente") ComboBox1.Items.Add(etiqueta.GetAttribute("VALUE")) 'te añadirá el texto de la etiqueta value ComboBox2.Items.Add(etiqueta.InnerText) 'te añadirá el texto en negro (InnerText) ComboBox1.SelectedIndex = 0 ComboBox2.SelectedIndex = 0

    'te debería añadir "Detectar automáticamente" en un combobox y en el otro "-" ElseIf etiqueta.GetAttribute("CLASSNAME").Contains("LS_Item") Then 'si es un idoma ComboBox1.Items.Add(etiqueta.GetAttribute("VALUE")) ComboBox2.Items.Add(etiqueta.InnerText) End If Next Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try End Sub End Class


    He probado el código y me funciona, estos son los resultados:

    Espero que te sirva de ayuda,

    GerrySoft.




    • Editado Gerry Soft miércoles, 30 de marzo de 2016 9:20
    miércoles, 30 de marzo de 2016 9:07
  • Otra opción es utilizar expresiones regulares, por ejemplo:

            Dim pattern As String = "<td class=""LS_Item[^>]*value=""([^""]*)"">([^<]*)</td>"
            For Each match As Match In Regex.Matches(textoHTML, pattern, RegexOptions.IgnoreCase)
                ComboBox1.Items.Add(match.Groups(1))
                ComboBox2.Items.Add(match.Groups(2))
            Next
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    miércoles, 30 de marzo de 2016 10:15
  • Yo usaría HTML Agility Pack para convertir el HTML a DOM y listo.

    Jose R. MCP
    Code Samples

    miércoles, 30 de marzo de 2016 13:55
    Moderador