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 :¬¬
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
(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)
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 (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!