2009-04-17 9 views
12

Hola, quiero crear una aplicación de escritorio (C# prob) que raspe o manipule un formulario en una página web de un tercero. Básicamente, ingreso mis datos en el formulario en la aplicación de escritorio, se va al sitio web de terceros y, usando el script o lo que sea de fondo, ingresa mis datos allí (incluido mi nombre de usuario) y hace clic en el botón de enviar por mí.I solo quiero evitar cargar el navegador!¿Cuál es el mejor lenguaje para raspar pantallas?

No habiendo hecho mucho (¡nada!) Trabajo en esta área, me preguntaba si un lenguaje de scripting como perl, python, ruby ​​etc. me permitiría hacerlo. ¿O simplemente haz todo el raspado usando C# y .net? ¿Cuál es el mejor IYO?

Estaba pensando en la secuencia de comandos que podría necesitar enganchar en el mismo script algo de las aplicaciones en diferentes plataformas (por ejemplo, el móvil Symbian donde no podría desarrollarlo en C# como lo haría con la versión de escritorio).

No es una aplicación web; de lo contrario, puedo utilizar el sitio original. Me doy cuenta de que todo parece inútil, pero la automatización para esta forma específica sería un verdadero ahorro de tiempo para mí.

+1

Esta es una pregunta acerca de raspado web no pantalla-raspado. Vuelva a etiquetarlo, por favor. –

+1

Etiqueta añadida web-scraping. No eliminó la etiqueta de raspado de pantalla. –

Respuesta

2

IMO Perl tiene una función de expresión regular y la capacidad de manipular texto lo convertiría en un buen contendiente para el raspado de la pantalla.

4

C# es más que adecuado para su pantalla raspado necesidades. La funcionalidad Regex de .NET es realmente agradable. Sin embargo, con una tarea tan simple, será difícil encontrar un idioma que no haga lo que desea con relativa facilidad. Teniendo en cuenta que ya estás programando en C#, me gustaría quedarte con eso.

La función incorporada de raspado de pantalla también es de primera clase.

26

No se olvide de mirar BeautifulSoup, es muy recomendable.

Véase, por ejemplo, options-for-html-scraping. Si necesita seleccionar un lenguaje de programación para esta tarea, diría Python.

Una solución más directa a su pregunta, consulte twill, un lenguaje de scripting simple para la navegación web.

6

Uso C# para raspar. Consulte el útil paquete HtmlAgilityPack. Para analizar páginas, utilizo XPATH o expresiones regulares. .NET también puede manejar fácilmente las cookies si lo necesita.

He escrito una pequeña clase que contiene todos los detalles de crear una WebRequest, enviarla, esperar una respuesta, guardar las cookies, manejar errores de red y retransmitir, etc. - el resultado final es que para la mayoría de las situaciones Puedo llamar a "GetRequest \ PostRequest" y recuperar un HtmlDocument.

4

Usted podría tratar de usar el código HTML de la agilidad Pack de .NET:

http://www.codeplex.com/htmlagilitypack

"Este es un analizador de HTML ágil que construye una lectura/escritura DOM y apoya XPATH liso o XSLT (que en realidad don NO DEBE entender XPATH ni XSLT para usarlo, no se preocupe ...). Es una biblioteca de códigos .NET que le permite analizar archivos HTML "fuera de la web". El analizador es muy tolerante con "real". world "HTML malformado. El modelo de objetos es muy similar a lo que propone System.Xml, pero para documentos HTML (o streams)."

0

o un palo con cliente Web en C# y algunas manipulaciones de cadenas.

2

Ruby es bastante grande! ... tratar su hpricot/mecanizar

1

HTML Agility Pack (c#)

  1. XPath es borked, la forma en que el HTML se limpia para que sea compatible con XML caerá etiquetas y hay que ajustar la expresión de conseguir que funcione.
  2. fácil de usar

Mozilla Parser (Java)

  1. apoyo XPath sólido
  2. tiene que establecer variables de entorno antes de que funcione, que es un dolor
  3. fundición entre org.dom4j.Node y org.w3c.dom.Node para obtener diferentes propiedades es un verdadero dolor
  4. muere en html no estándar (0,3 fixes thi s)
  5. mejor solución para XPath
  6. problemas de acceso a los datos de los nodos de un NodeList

    uso un for (int i = 1; i < = list_size; i ++) para moverse por que

Beautiful Soup (Python)

no tengo mucha experiencia, pero esto es lo que he encontrado

  1. ningún apoyo XPath
  2. interfaz agradable al encauzamiento html

prefiero Mozilla HTML Analizador

0

Secundo la recomendación para Python (o sopa de Hermosa). Actualmente estoy en medio de un pequeño proyecto de captura de pantalla usando Python, y el manejo automático de cosas como la autenticación de cookies (a través de CookieJar y urllib) simplifica enormemente las cosas. Python es compatible con todas las características más avanzadas que pueda necesitar (como expresiones regulares), además de tener la ventaja de poder manejar proyectos como este rápidamente (no demasiada sobrecarga al tratar con cosas de bajo nivel). También es relativamente multiplataforma.

Cuestiones relacionadas