2009-11-17 37 views
11

He estado programando durante muchos años, y solo tengo una pregunta.¿Lenguaje de programación para navegar automáticamente en el sitio web?

¿Qué lenguaje de programación le permite crear programas que pueden navegar automáticamente en sitios web y realizar diversas acciones? Por ejemplo, iniciar sesión, navegar a una página específica, completar formularios, extraer cierto texto, etc.

Esto es diferente a una macro ya que una macro solo realiza un conjunto predefinido de acciones. Por otro lado, el programa se comportaría de manera diferente dependiendo de lo que se muestra en la pantalla.

¿Algún tipo de lenguaje de scripting? O un lenguaje de propósito general. Sus respuestas serán apreciadas.

Respuesta

7

He estado usando Ruby y watir para hacer eso, es muy sencillo y funciona automatizando IE o Firefox.

con este enfoque el navegador maneja cualquier desorden JavaScript pero todavía tener un acceso completo al contenido de la página por lo que sólo tiene que añadir su lógica única como llenar un formulario en línea.

2

Puede usar LWP::Simple en Perl.

Puede encontrar mucha información en la web, pero Getting more out of LWP::Simple es un tutorial sobre Perlmonks.

+0

Por favor, no me menosprecies solo porque Perl es No-muerto. – t3rse

+0

LWP :: Simple puede buscar recursos únicos de páginas web, pero no tiene ninguna característica para navegar en un sitio web. –

-1

Usted puede hacer todo esto con el objeto WebRequest en C#

public static void Main() 
{ 
    // Create a request for the URL.   
    WebRequest request = WebRequest.Create ("http://www.contoso.com/default.html"); 
    // If required by the server, set the credentials. 
    request.Credentials = CredentialCache.DefaultCredentials; 
    // Get the response. 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    // Display the status. 
    Console.WriteLine (response.StatusDescription); 
    // Get the stream containing content returned by the server. 
    Stream dataStream = response.GetResponseStream(); 
    // Open the stream using a StreamReader for easy access. 
    StreamReader reader = new StreamReader (dataStream); 
    // Read the content. 
    string responseFromServer = reader.ReadToEnd(); 
    // Display the content. 
    Console.WriteLine (responseFromServer); 
    // Cleanup the streams and the response. 
    reader.Close(); 
    dataStream.Close(); 
    response.Close(); 
} 
+0

webrequest et similar (cURL) no permite interactuar con formularios, JavaScript, etc. – kappa

3

creo que no está buscando un idioma, sino un marco que permitirá hacer esta. Esto generalmente se hace por web scraping software. Hay algunos servicios en línea, p. Mozenda que te permiten hacer cosas simples. También hay marcos que lo ayudan a hacer lo mismo de una manera más rigurosa. Tengo algo de experiencia con screen-scraper, que creo que es uno de los más ricos en características.

Sin embargo, otro tipo de marco es rastreador web -.. Esto es ir a través de una página web y el índice (como por un motor de búsqueda

6

para Perl, el WWW::Mechanize es la herramienta estándar para navegar por sitios web Maneja las cookies , sesiones, sabe cómo interactuar con formularios, realizar clics, etc. Mantiene el estado a medida que avanza.

Es un inconveniente no manejar javascript. Hay algunos módulos de Perl para interactuar con Javascript, pero no están disponibles. 'Integrado con WWW :: Mecanizar.

1

Sin duda iré por el scripting la idioma, con Ruby/Mechanize siendo mi favorito, eche un vistazo a algunos examples ... Perl y Python también son buenas opciones, sin duda. A menos que exista un plan para que sea parte de alguna otra aplicación, evitaría los lenguajes estáticos, demasiado código repetitivo en mi humilde opinión.

require 'rubygems' 
require 'mechanize' 

agent = WWW::Mechanize.new 
page = agent.get('http://google.com/') 
google_form = page.form('f') 
google_form.q = 'ruby mechanize' 
page = agent.submit(google_form) 
pp page 

Mechanize es realmente grande biblioteca, ya que no es simplemente HTTP GET/POST peticiones y tomará: se hacer el seguimiento de las cookies de este modo que emulan estrechamente el comportamiento del navegador web real.

5

Muchas de estas respuestas están orientadas a aplicaciones de raspado. Si esto es lo que quieres, utiliza el equivalente de WWW :: Mechanize en tu idioma de elección (Perl's es canónico, Python también funciona bien).

Sin embargo, de su pregunta parece que puede querer automatizar las pruebas unitarias para sitios web. Si este es el caso, además de ese marco para probar la corrección del HTML devuelto para cualquier página dada, también desea un marco de prueba en el navegador.

Dos que se destacan son Twill y Selenium.

Proporcionan exactamente lo que está pidiendo: una interfaz simple para explorar sitios web desde un script. Permiten un mayor control de su navegación, especialmente con respecto a JavaScript y varios tipos de efectos que se manifiestan a medida que avanza y retrocede en un sitio web dejando un rastro.

1

WatiN es otra forma .Net de navegar y realizar diversas acciones.

Cuestiones relacionadas