2010-05-10 58 views
8

我想從下載幾個HTML頁面http://abc.com/view_page.aspx?ID=該ID來自不同數字的數組。智能屏幕抓取使用不同的代理和用戶代理隨機?

我會有興趣訪問此URL的多個實例,並使用不同的代理IP /端口將文件保存爲[ID] .HTML。

我想使用不同的用戶代理,並且我想在每次下載之前隨機化等待時間。

這樣做的最好方法是什麼? urllib2的? pycURL?捲曲?你喜歡做什麼?

請指教。多謝你們!

+2

你爲什麼要隨機化用戶代理? – 2010-05-10 15:11:36

+2

我不想透露我是下載頁面的人。爲了加強它,如果我們隨機使用不同的瀏覽器,這將鞏固我的匿名性,你說什麼? – ThinkCode 2010-05-10 15:25:55

回答

5

使用類似:

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

使用unix工具wget。它可以選擇指定自定義用戶代理和頁面每次檢索之間的延遲。

欲瞭解更多信息,你可以看到wget(1) man page

+0

這是一個好開始,謝謝!可以使用--random-wait。儘管如此,不太確定代理執行情況。有任何想法嗎? – ThinkCode 2010-05-10 15:27:16

+0

我只使用'wget'進行基本的報廢,所以很抱歉,我無法給你更多關於代理的信息。 – pajton 2010-05-10 15:31:19

+1

在wget中使用代理服務器: setenv http_proxy = http://proxy.example.com:8080; wget --proxy-user = foo --proxy-password = bar --user-agent =「Frobzilla/1.1」[url] – wump 2010-05-10 16:40:41

2

如果你不希望使用開放代理,結賬ProxyMesh,這確實IP旋轉/隨機爲您服務。