Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: error404x en 19 Junio 2015, 03:17 am



Título: Ayuda extraer texto de una web
Publicado por: error404x en 19 Junio 2015, 03:17 am
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
  1. Public Class Form1
  2.  
  3.    Private Sub Traductor_Button_Click(sender As Object, e As EventArgs) Handles Traductor_Button.Click
  4.        Try
  5.            Dim MIHTML As String = WebBrowser1.DocumentText
  6.            Dim Traduccion As String = WebUtility.HtmlDecode(MIHTML) 'PARA EVITAR PROBLEMAS CON LOS ACUTE,TILDE, ETC.
  7.            Traduccion = Traduccion.Remove(0, Traduccion.IndexOf("class" & """" & "hps") + 10)
  8.            Traduccion = Traduccion.Substring(0, Traduccion.IndexOf("</span"))
  9.            TextBox2.Text = Traduccion
  10.        Catch ex As Exception
  11.            MsgBox(ex.Message)
  12.        End Try
  13.        WebBrowser1.Navigate("https://translate.google.com/#auto/es" & TextBox1.Text)
  14.  
  15.    End Sub
  16.  
  17.    Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
  18.  
  19.    End Sub
  20.  
  21.    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  22.  
  23.    End Sub
  24.  
  25.    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  26.        WebBrowser1.Document.GetElementById("source").SetAttribute("value", TextBox1.Text)
  27.    End Sub
  28.  
  29.    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
  30.  
  31.    End Sub
  32. End Class
  33.  

(http://k33.kn3.net/D/D/D/D/4/0/1BC.jpg)


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

Citar
(http://k46.kn3.net/D/C/0/B/4/1/60C.jpg)



Título: Re: Ayuda extraer texto de una web
Publicado por: Eleкtro en 19 Junio 2015, 03:51 am
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):
Código:
{"sentences":[{"trans":"Hello","orig":"hola","translit":"","src_translit":""}],"src":"es","server_time":26}

Respuesta formateada:
Código:
{
"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 (http://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!