2010-05-10 5 views
8

Desidero scaricare alcune pagine HTML da http://abc.com/view_page.aspx?ID= L'ID proviene da una matrice di numeri diversi.Scrittura intelligente dello schermo utilizzando diversi proxy e user-agent in modo casuale?

Sarei interessato a visitare più istanze di questo URL e salvare il file come [ID] .HTML utilizzando diversi IP/porte proxy.

Voglio utilizzare diversi user-agent e voglio randomizzare i tempi di attesa prima di ogni download.

Qual è il modo migliore per farlo? urllib2? pycurl? arricciare? Cosa preferisci per il compito a portata di mano?

Si prega di avvisare. Grazie ragazzi!

+2

Perché vuoi randomizzare gli user-agent? –

+2

Non voglio rivelare che sono io a scaricare la pagina. Per aumentarlo, se usiamo i vari browser in modo casuale, questo solidificherà il mio anonimato, cosa dici? – ThinkCode

risposta

5

Usa qualcosa come:

import urllib2 
import time 
import random 

MAX_WAIT = 5 
ids = ... 
agents = ... 
proxies = ... 

for id in ids: 
    url = 'http://abc.com/view_page.aspx?ID=%d' % id 
    opener = urllib2.build_opener(urllib2.ProxyHandler({'http' : proxies[0]})) 
    html = opener.open(urllib2.Request(url, None, {'User-agent': agents[0]})).read() 
    open('%d.html' % id, 'w').write(html) 
    agents.append(agents.pop()) # cycle 
    proxies.append(proxies.pop()) 
    time.sleep(MAX_WAIT*random.random()) 
2

Utilizzare lo strumento unix wget. Ha un'opzione per specificare un user-agent personalizzato e un ritardo tra ogni recupero della pagina.

È possibile visualizzare wget(1) man page per ulteriori informazioni.

+0

Questo è un buon inizio, grazie! --random-wait può essere usato. Non così sicuro sull'implementazione del proxy. Qualche idea? – ThinkCode

+0

Ho usato solo 'wget' per lo scraping di base, quindi mi dispiace, non posso darti più informazioni sul proxy con esso. – pajton

+1

Utilizzo di un proxy in wget: setenv http_proxy = http: //proxy.example.com: 8080; wget --proxy-user = foo --proxy-password = bar --user-agent = "Frobzilla/1.1" [url] – wump

2

Se non si desidera utilizzare proxy aperti, cassa ProxyMesh, che fa la rotazione IP/randomizzazione per voi.

Problemi correlati