2009-11-17 21 views
11

Ho programmato per molti anni e ho solo una domanda.Linguaggio di programmazione per navigare automaticamente sul sito web?

Quale linguaggio di programmazione consente di creare programmi che possono navigare automaticamente sui siti Web ed eseguire varie azioni? Ad esempio, accedere, navigare in una pagina specifica, compilare moduli, estrarre determinati testi e così via.

Questo è diverso da una macro poiché una macro esegue solo un insieme predefinito di azioni. D'altra parte, il programma si comporterebbe in modo diverso a seconda di ciò che viene visualizzato sullo schermo.

Forse una sorta di linguaggio di scripting? O un linguaggio generico. Le tue risposte saranno apprezzate.

risposta

7

Ho utilizzato Ruby e watir per fare proprio questo, è molto semplice e funziona automatizzando IE o Firefox.

con questo approccio il browser gestisce alcun disordine JavaScript ma è ancora avere accesso completo al contenuto della pagina quindi basta aggiungere la logica unica come riempire un modulo online.

2

È possibile utilizzare LWP::Simple in Perl.

È possibile trovare molte informazioni sul Web ma Getting more out of LWP::Simple è un tutorial su Perlmonks.

+0

Si prega di non mi downvote solo perché Perl è non morti. – t3rse

+0

LWP :: Simple può recuperare singole pagine Web, ma non ha alcuna funzionalità per la navigazione di un sito web. –

0

Praticamente qualsiasi linguaggio lo farà ora, perl, php/curl in linux e asp/C# in Windows.

check this out - PHP Form Filling Tutorial

-1

È possibile fare tutto questo con l'oggetto WebRequest in 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) non consente di interagire con forme, javascript ecc. – kappa

3

credo che non siete alla ricerca di un linguaggio, ma un quadro che permetterà di fare Questo. Questo è in genere fatto da web scraping software. Esistono alcuni servizi online, ad es. Mozenda che ti permettono di fare cose semplici. Ci sono anche strutture che ti aiutano a fare lo stesso in un modo più rigoroso. Ho un po 'di esperienza con screen-scraper, che ritengo sia uno dei più ricchi di funzionalità.

Ancora un altro tipo di quadro è crawler web -.. Questo è quello di passare attraverso un sito web e indice di esso (come per un motore di ricerca

6

per il Perl, il WWW::Mechanize è lo strumento standard per la navigazione siti web Esso gestisce i cookie , sessioni, sa come interagire con i moduli, eseguire i clic e così via.Mantiene lo stato mentre va avanti.

È uno svantaggio non sta gestendo javascript. Ci sono alcuni moduli Perl per interagire con Javascript, ma non sono integrabile con WWW :: Mechanize.

1

Mi piacerebbe andare per alcuni script la nguage, con Ruby/Mechanize che è il mio preferito, dai uno sguardo ad alcuni examples ... Perl e Python sono anche buone scelte, di sicuro. A meno che non ci sia un piano per farne parte di qualche altra applicazione, vorrei evitare le lingue tipizzate in modo statico - troppo codice di codice di installazione IMHO.

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 è davvero grande biblioteca, in quanto non è solo semplice HTTP GET/POST richiesta-e-fetch: è tenere traccia dei cookie quindi strettamente emulano il comportamento del browser web vero e proprio.

5

Molte di queste risposte sono orientate verso le applicazioni di raschiamento. Se questo è quello che vuoi, usa l'equivalente di WWW :: Mechanize nella tua lingua preferita (Perl's è canonico, anche Python funziona bene).

Tuttavia, dalla tua domanda sembra che tu stia desiderando automatizzare i test unitari per i siti web. Se questo è il caso, oltre a quel framework per testare la correttezza del codice HTML restituito per ogni pagina, si desidera anche un framework di test nel browser.

Due che spiccano sono Twill e Selenium.

Questi forniscono esattamente quello che stai chiedendo: una semplice interfaccia per la navigazione di siti Web da uno script. Consentono un maggiore controllo della tua navigazione, in particolare per quanto riguarda JavaScript e vari tipi di effetti che si manifestano mentre vai avanti e indietro in un sito web che lascia una traccia.

1

WatiN è un altro modo .Net per navigare ed eseguire varie azioni.

Problemi correlati