es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo analizar texto con el control WebView2

Necesito obtener el texto que cambia constantemente de un sitio web que no se carga con el antiguo control Web Browser, así que estoy dando mis primeros pasos en WebView2.

El HTML que quiero analizar es:

<td data-v-39c7db2a="" class="text-right">
0.0000%
</td>

el valor que necesito es el porcentaje.
El código que estoy utilizando es:
“`
Private Sub WebView2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView2.NavigationCompleted

Dim text As String = Await WebView2.ExecuteScriptAsync("document.getElementById('text-right').selectedIndex")
MessageBox.Show(text)
“`

No muestra un cuadro de mensaje, simplemente muestra “null”.
Ahora es un poco complicado cambiar del control webbrowser antiguo al WebView, también debido a la falta de documentación.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en .net, vb.net, visual-studio, parsing y webview2, estás intentando extraer información de un sitio web que actualiza constantemente su contenido. No puedes utilizar el antiguo control de navegador web para este propósito, por lo que estás utilizando WebView2 para esta tarea. El código HTML que deseas analizar es:

    <td data-v-39c7db2a="" class="text-right">
    0.0000%
    </td>
    

    Necesitas extraer el valor de porcentaje de este código. Estás intentando utilizar el siguiente código para lograr esto:

    “`vb.net
    Private Sub WebView2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView2.NavigationCompleted
    Dim text As String = Await WebView2.ExecuteScriptAsync(“document.getElementById(‘text-right’).selectedIndex”)
    MessageBox.Show(text)
    End Sub


    Sin embargo, este código no devuelve la salida requerida. Solo devuelve un valor `null`. La razón de esto podría ser que `getElementById` requiere un atributo `id`, que no está presente en la etiqueta `td` del código HTML. En su lugar, puedes utilizar el método `getElementsByClassName` para obtener todos los elementos con la clase `text-right` y luego extraer el contenido de texto del primer elemento de la colección resultante. Aquí tienes el código actualizado: ```vb.net Private Sub WebView2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView2.NavigationCompleted Dim textElements As IReadOnlyList(Of CoreWebView2WebResourceResponse) = Await WebView2.CoreWebView2.ExecuteScriptAsync("document.getElementsByClassName('text-right')") If textElements.Count > 0 Then Dim text As String = textElements(0).AsString() MessageBox.Show(text) Else MessageBox.Show("No se encontraron elementos de texto") End If End Sub

    Este código obtiene todos los elementos con la clase text-right y comprueba si se encontraron elementos. Si hay elementos, extrae el contenido de texto del primer elemento utilizando el método AsString() y muestra el contenido en un cuadro de mensaje. Si no se encuentran elementos con la clase especificada, muestra un mensaje que indica lo mismo.

Comments are closed.