Domanda

Sto cercando di automatizzare l'estrazione dei dati da un sito web e ho davvero non so da dove cominciare. Uno dei nostri fornitori ci sta dando accesso ad alcuni dati apparecchiature di registrazione attraverso un " Business Objects 11 " domanda on-line. Se non si ha familiarità con questa applicazione on-line, pensare ad esso come un generatore di report web-based. Il problema è che sto cercando di monitorare un sacco di materiale e questa azienda ha creato solo una richiesta per estrarre un log alla volta. Questa richiesta prende il numero attrezzature, la data di inizio e la data di fine ... A peggiorare le cose, siamo in grado di esportare solo il formato binario Excel in quanto "csv" de l'esportazione è rotto e si rifiutano di risolvere il problema ... quindi noi sono limitati da 65 536 limitazione fila di Excel ... (che ammonta a 3-4 giorni di registrazione dei dati nel mio caso). Non riesco a creare un nuovo resquest come solo il fornitore ha i diritti di amministrazione necessari.

Cosa pensi sarebbe il più elegante modo di gestire un sacco di richieste (circa 800) attraverso una GUI web? Credo che avrei potuto hardcode posizioni del mouse, fare clic su eventi e sequenze di tasti con ritardi e tutto ... ma ci deve essere un modo migliore.

Ho letto di AutoHotKey e AutoIt scripting ma sembrano essere limitato da quello che possono fare sul web. Anche ... mi sono bloccato con IE6 ... Ma se si conosce un modo che coinvolge un altro browser, io sono ancora molto interessato alla tua risposta.

(una volta che ho i file di log in locale, l'estrazione dei dati è non un problema)

È stato utile?

Soluzione

Ci sono alcune cose che si potrebbe provare. Se il sito è un html e report può essere richiesto da un semplice POST o GET quindi urlib / urlib2 < modules / a> e cookielib Python dovrebbero essere abbastanza per andare a prendere un documento Excel.

Allora si può provare questo: XLRD per estrarre i dati da Excel.

Inoltre, dare un'occhiata a: http://pamie.sourceforge.net /. Non ho mai provato io stesso, ma sembra essere molto promettente e facile da usare.

Altri suggerimenti

Normalmente, vorrei suggerire di non usare IE (o qualsiasi browser) a tutti. Ricordate, il software del browser web sono programmi solo proxy per effettuare richieste HTTP e la visualizzazione dei risultati in modo significativo. Ci sono altri modi per fare richieste HTTP simili ed elaborare le risposte. Quasi ogni lingua moderna ha questo integrato in esso API da qualche parte. Questo si chiama screen scraping o web scraping.

Ma per completare questo suggerimento ho bisogno di sapere di più sul vostro ambiente di programmazione:? Cioè, nel linguaggio di programmazione immaginate scrivere questo script

Un tipico esempio utilizzando C # in cui basta ottenere il risultato come stringa html sarebbe simile a questa:

new System.Net.WebClient().DownloadString("http://example.com");

È quindi analizzare la stringa per trovare tutti i campi necessari e inviare un'altra richiesta. La classe WebClient hanno anche un metodo .DownloadFile() che potreste trovare utile per recuperare i file excel.

Dal momento che è possibile utilizzare .NET, si dovrebbe considerare l'utilizzo di Windows Form controllo WebBrowser. È possibile automatizzare per accedere al sito, bottoni a pressione, ecc Una volta che la pagina del report viene caricato, è possibile utilizzare il codice per navigare il DOM HTML per trovare i dati che si desidera -. Non ci sono le espressioni regolari coinvolti

Ho fatto qualcosa di simile anni fa, per estrarre i dati d'asta da eBay.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top