Acquisizione di testo da una pagina Web
Domanda
Vorrei scrivere un programma che troverà gli orari delle fermate dell'autobus e aggiornerà di conseguenza la mia pagina web personale.
Se dovessi farlo manualmente lo farei
- Visita www.calgarytransit.com
- Immettere un numero di stop. cioè) 9510
- Fai clic sul pulsante " bus successivo "
I risultati potrebbero essere i seguenti:
10: 16p Route 154
10: 46p Percorso 154
11: 32p Route 154
Dopo aver acquisito tempo e percorsi, aggiornerò di conseguenza la mia pagina web.
Non ho idea da dove cominciare. So che si occupa di programmazione web ma è in grado di scrivere C e Python. Quali sono alcuni argomenti / librerie che potrei esaminare?
Soluzione
Beautiful Soup è una libreria Python progettata per l'analisi pagine web. Tra esso e urllib2 ( urllib.request in Python 3) dovresti essere in grado di capire di cosa hai bisogno.
Altri suggerimenti
Quello che stai chiedendo si chiama " web scraping " Sono sicuro che se cerchi su Google troverai alcune cose, ma l'idea di base è che vuoi aprire una connessione al sito Web, digerire l'HTML, analizzarlo e identificare i blocchi che desideri.
Il Wiki Python ha molte cose in merito.
Dato che scrivi in ??C, potresti voler dare un'occhiata a cURL ; in particolare, dai un'occhiata a libcurl. È fantastico.
È possibile utilizzare la libreria meccanize disponibile per Python http://wwwsearch.sourceforge.net/mechanize /
Puoi usare Perl per aiutarti a completare il tuo compito.
use strict;
use LWP;
my $browser = LWP::UserAgent->new;
my $responce = $browser->get("http://google.com");
print $responce->content;
Il tuo oggetto responce può dirti se ha funzionato oltre a restituire il contenuto della pagina. Puoi anche usare questa stessa libreria per pubblicare su una pagina.
Ecco un po 'di documentazione. http://metacpan.org/pod/LWP::UserAgent
Questo sito non offre un'API per poter ottenere i dati appropriati di cui hai bisogno. In tal caso, dovrai analizzare la pagina HTML effettiva restituita, ad esempio, da una richiesta CURL.
Questo si chiama Web scraping e ha persino il suo articolo di Wikipedia dove puoi trovare maggiori informazioni.
Inoltre, potresti trovare maggiori dettagli in questo SO discussione .
Fintanto che il layout della pagina web che stai cercando di 'raschiare' non cambia regolarmente, dovresti essere in grado di analizzare l'html con qualsiasi linguaggio di programmazione moderno.