随机使用不同代理和用户代理的智能屏幕抓取?

时间:2010-05-10 15:08:16

标签: python proxy screen-scraping

我想从 http://abc.com/view_page.aspx?ID=下载几个HTML页面该ID来自不同数字的数组。

我有兴趣访问此URL的多个实例,并使用不同的代理IP /端口将文件另存为[ID] .HTML。

我想使用不同的用户代理,我想在每次下载之前随机化等待时间。

这样做的最佳方式是什么? urllib2的? pycURL?卷曲?你更喜欢手头的任务?

请指教。谢谢你们!

3 个答案:

答案 0 :(得分: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())

答案 1 :(得分:2)

使用unix工具wget。它可以选择指定自定义用户代理和每次检索页面之间的延迟。

您可以查看wget(1) man page了解详情。

答案 2 :(得分:2)

如果您不想使用开放代理,请结帐ProxyMesh,为您进行IP轮换/随机化。