Domanda

Voglio eseguire la scansione di un sito con Greasemonkey e chiedo se esiste un modo migliore per archiviare temporaneamente i valori rispetto a GM_setValue.

Quello che voglio fare è scansionare i miei contatti in un social network ed estrarre gli URL di Twitter dalle loro pagine del profilo.

Il mio piano attuale è quello di aprire ogni profilo nella sua scheda, in modo che assomigli di più a una normale persona di navigazione (ad es. css, scrit e immagini verranno caricati dal browser). Quindi memorizzare l'URL di Twitter con GM_setValue. Dopo aver eseguito la scansione di tutte le pagine del profilo, creare una pagina utilizzando i valori memorizzati.

Tuttavia, non sono così contento dell'opzione di archiviazione. Forse c'è un modo migliore?

Ho considerato di inserire i profili utente nella pagina corrente in modo da poterli processare tutti con la stessa istanza di script, ma non sono sicuro che XMLHttpRequest sembri indistinguibile dalle normali richieste avviate dall'utente.

È stato utile?

Soluzione

Ho avuto un progetto simile in cui dovevo ottenere un sacco di (dati della linea di fattura) da un sito Web ed esportarlo in un database di contabilità.

È possibile creare un back-end .aspx (o PHP ecc.), che elabora i dati POST e li memorizza in un database.

Tutti i dati desiderati da una singola pagina possono essere memorizzati in un modulo (nascosto utilizzando le proprietà dello stile, se lo si desidera), utilizzando i nomi dei campi o gli ID per identificare i dati. Quindi tutto ciò che devi fare è rendere l'azione del modulo una pagina aspx e inviare il modulo usando javascript.

(In alternativa è possibile aggiungere un pulsante di invio alla pagina, consentendo di verificare i valori del modulo prima di inviare al database).

Altri suggerimenti

Penso che dovresti prima chiederti perché vuoi usare Greasemonkey per il tuo problema specifico. Greasemonkey è stato sviluppato come un modo per modificare la propria esperienza di navigazione, non come un web spider. Mentre potresti essere in grado di convincere Greasemonkey a farlo usando GM_setValue, penso che troverai la tua soluzione kludgy e difficile da sviluppare. Questo e richiederà molti passaggi manuali (come aprire tutte quelle schede, cancellare le variabili Greasemonkey tra le esecuzioni dello script, ecc.)

Qualcosa che stai facendo richiede l'esecuzione del JavaScript nella pagina? In tal caso, potresti prendere in considerazione l'utilizzo di Perl e WWW :: Mechanize :: Plugin :: JavaScript . Altrimenti, consiglierei di fare tutto questo in un semplice script Python. Dovresti dare un'occhiata a urllib2 modulo. Ad esempio, dai un'occhiata al seguente codice (nota che utilizza cookielib per supportare i cookie, che molto probabilmente ti servirà se il tuo script richiede di essere loggato in un sito):

import urllib2
import cookielib
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
response = opener.open("http://twitter.com/someguy")
responseText = response.read()

Quindi puoi eseguire tutte le elaborazioni che desideri utilizzando le espressioni regolari.

Hai considerato Google Gears? Ciò ti darebbe accesso a un database SQLite locale in cui puoi archiviare grandi quantità di informazioni.

  

Il motivo per volere Greasemonkey   è che la pagina da sottoporre a scansione fa   non approvare davvero i robot.   Greasemonkey sembrava il più semplice   modo per far sembrare il crawler   legittima.

In realtà contaminare il tuo crawler attraverso il browser non lo rende più legittimo. Stai ancora violando i termini di utilizzo del sito! WWW :: Mechanize, ad esempio, è altrettanto adatto a "falsificare" la stringa dell'agente utente, ma ciò e la scansione è, se il sito non consente a ragni / crawler, illegale!

  

Il motivo per volere Greasemonkey è che la pagina da sottoporre a scansione non approva davvero i robot. Greasemonkey sembrava il modo più semplice per rendere legittimo il crawler.

Penso che questo sia il modo più difficile che si possa immaginare di rendere legittimo un cingolato. Lo spoofing di un browser Web è banalmente facile con una conoscenza di base delle intestazioni HTTP.

Inoltre, alcuni siti hanno euristiche che cercano client che si comportano come ragni, quindi semplicemente fare richieste come browser non significa che non sapranno cosa stai facendo.

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