2010-05-10 6 views
8

Ich möchte einige HTML-Seiten herunterladen von http://abc.com/view_page.aspx?ID= Die ID ist aus einem Array von verschiedenen Zahlen.Intelligentes Screen Scraping mit verschiedenen Proxies und User-Agenten nach dem Zufallsprinzip?

Ich wäre daran interessiert, mehrere Instanzen dieser URL zu besuchen und die Datei als [ID] .HTML unter Verwendung verschiedener Proxy-IP/-Ports zu speichern.

Ich möchte verschiedene User-Agents verwenden und möchte die Wartezeiten vor jedem Download randomisieren.

Was ist der beste Weg, dies zu tun? urllib2? pycURL? cURL? Was bevorzugen Sie für die anstehende Aufgabe?

Bitte beraten. Danke Leute!

+2

Warum möchten Sie die User-Agents randomisieren? –

+2

Ich möchte nicht verraten, dass ich derjenige bin, der die Seite herunterlädt. Um es zu erhöhen, wenn wir zufällig verschiedene Browser verwenden, das wird meine Anonymität festigen, was sagst du? – ThinkCode

Antwort

5

Verwendung so etwas wie:

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

Verwenden Sie das Unix-Tool wget. Es hat die Option, einen benutzerdefinierten Benutzeragenten und eine Verzögerung zwischen jedem Abruf der Seite anzugeben.

Sie können wget(1) man page für weitere Informationen sehen.

+0

Das ist ein guter Anfang, danke! --random-wait kann verwendet werden. Nicht so sicher über die Proxy-Implementierung. Irgendwelche Ideen? – ThinkCode

+0

Ich habe nur 'wget' für das einfache Verschrotten benutzt, es tut mir leid, ich kann Ihnen keine weiteren Informationen über das Proxying geben. – pajton

+1

Verwendung eines Proxys in wget: setenv http_proxy = http: //proxy.example.com: 8080; wget --proxy-user = foo --proxy-passwort = bar --user-agent = "Frobzilla/1.1" [url] – wump

2

Wenn Sie nicht möchten, offene Proxies verwenden, Kasse ProxyMesh, die tut IP Rotation/Randomisierung für Sie.