Ayuda extraer texto de una web

Iniciado por error404x, 19 Junio 2015, 03:17 AM

0 Miembros y 1 Visitante están viendo este tema.

error404x

Hola amigo(s) , quisiera su ayuda para extraer el texto de una web .. les explico
Estoy haciendo un traductor usando el traductor de google  :xD pero tengo problemas para sacar el texto traducido  :huh: , en lugar de texto traducido solo me muestra parte del codigo fuente   :¬¬

Código (vbnet) [Seleccionar]
Public Class Form1

    Private Sub Traductor_Button_Click(sender As Object, e As EventArgs) Handles Traductor_Button.Click
        Try
            Dim MIHTML As String = WebBrowser1.DocumentText
            Dim Traduccion As String = WebUtility.HtmlDecode(MIHTML) 'PARA EVITAR PROBLEMAS CON LOS ACUTE,TILDE, ETC.
            Traduccion = Traduccion.Remove(0, Traduccion.IndexOf("class" & """" & "hps") + 10)
            Traduccion = Traduccion.Substring(0, Traduccion.IndexOf("</span"))
            TextBox2.Text = Traduccion
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        WebBrowser1.Navigate("https://translate.google.com/#auto/es" & TextBox1.Text)

    End Sub

    Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged

    End Sub

    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        WebBrowser1.Document.GetElementById("source").SetAttribute("value", TextBox1.Text)
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

    End Sub
End Class




Tmbn tengo este problema, algunas veces funciona normal  :D y otras me sale este error  :(

Citar


Eleкtro

#1
Buenas

Para usar un servicio online, antes de ponerte a trastear primero tienes que analizar y/o documentarte sobre que parámetros puede tomar la query de dicho servicio.

Dicho esto, por lo que siempre he visto, es mala idea traducir la respuesta de GoogleTranslate, te va a dar cientos de problemas muy concretos de parsing, pero si aun así lo quieres intentar, entonces para intentar sacarle el máximo beneficio posible a lo que estás intentando hacer, obtén la respuesta en formato JSON, esto lo puedes hacer asignando el parámetro client con un valor que sea diferente a "t":

Ejemplo:
http://translate.google.com/translate_a/t?client=p&text=hola&sl=es&tl=en

Respuesta (RAW):
{"sentences":[{"trans":"Hello","orig":"hola","translit":"","src_translit":""}],"src":"es","server_time":26}

Respuesta formateada:
{
"sentences":
[
{
"trans":"Hello",
"orig":"hola",
"translit":"",
"src_translit":""
}
],
"src":"es",
"server_time":26
}


Puedes utilizar la ibrería JSON.Net (si no recuerdo mal la tienes disponible desde la consola NuGet de VisualStudio también) para llevar a cabo la tarea de parseo de la manera más eficiente.

PD: Hay proyectos de clientes gratuitos y muy elaborados de GoogleTranslate en C# que puedes encontrar en páginas cómo codeproject.com, pero ninguno es perfecto al intentar traducir en ciertas circunstancias (por las complicaciones variables del parseo de la respuesta). En cambio, la Web-API de pago de GoogleTranslate te lo da todo hecho de manera muy limpia y facil, sin complicaciones (al menos por lo que he visto en la documentación oficial de Google Dev).

Saludos!