2012-07-12 9 views
9

Sto lavorando a un progetto per analizzare come vengono citati gli articoli del diario. Ho un grande file di nomi di articoli di riviste. Intendo trasmetterli a Google Scholar e vedere quante citazioni hanno ciascuno.Uso di tor e python per grattare Google Scholar

Ecco la strategia che sto seguendo:

  1. Usa "scholar.py" da http://www.icir.org/christian/scholar.html. Questo è uno script python pre-scritto che ricerca google studioso e restituisce informazioni sul primo hit in formato CSV (incluso il numero di citazioni)

  2. Google studioso ti blocca dopo un certo numero di ricerche (ho circa 3000 titoli di articoli per query). Ho scoperto che molte persone usano Tor (How to make urllib2 requests through Tor in Python? e Prevent Custom Web Crawler from being blocked) per risolvere questo problema. Tor è un servizio che ti dà un indirizzo IP casuale ogni pochi minuti.

Ho scholar.py e tor entrambi impostati e funzionanti correttamente. Non ho molta familiarità con Python o con la libreria urllib2 e mi chiedo quali modifiche siano necessarie per scholar.py in modo che le query vengano instradate attraverso Tor.

Sono anche disponibile a suggerimenti per un approccio più semplice (e potenzialmente considerevolmente diverso) per le query di massa di Google Scholar, se ne esiste una.

Grazie in anticipo

risposta

1

Per me il modo migliore per utilizzare TOR è setting up a local proxy like polipo. Mi piace di clonare il repo e compilare a livello locale:

git clone https://github.com/jech/polipo.git 
cd polipo 
make all 
make install 

Ma è possibile utilizzare il gestore di pacchetti (brew install polipo in Mac, apt install polipo su Ubuntu). Quindi scrivere un semplice file di configurazione:

echo socksParentProxy=localhost:9050 > ~/.polipo 
echo diskCacheRoot='""' >> ~/.polipo 
echo disableLocalInterface=true >> ~/.polipo 

quindi eseguirlo:

polipo 

Vedi urllib docs on how to use a proxy. Come molte applicazioni UNIX, urllib onorerà la variabile d'ambiente http_proxy:

export http_proxy="http://localhost:8123" 
export https_proxy="http://localhost:8123" 

mi piace utilizzare la libreria richieste, un involucro più bello per urllib. Se non lo avete già:

pip install requests 

Se urllib sta usando Tor seguente one-liner deve stampare Vero:

python -c "import requests; print('Congratulations' in requests.get('http://check.torproject.org/').text)" 

Ultima cosa, attenzione: la rete Tor non è un pass gratuito per fare sciocchezze su Internet perché anche se lo si utilizza non si deve presumere che tu sia totalmente anonimo.

+0

Il primo link non è più valido – chrisfs

+0

Link rot, è per questo che risposte di solo collegamento fa schifo ... Dovrei includere le istruzioni nella risposta, purtroppo mi manca il tempo di farlo adesso, mi spiace. –

+0

per il collegamento è stato eseguito il backup per ora – user3791372