代码之家  ›  专栏  ›  技术社区  ›  ThinkCode

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

  •  8
  • ThinkCode  · 技术社区  · 16 年前

    我想从 http://abc.com/view_page.aspx?ID= ID来自不同数字的数组。

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

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

    最好的方法是什么?ULLIb2?吡咯?卷曲?对于手头的任务,您更喜欢什么?

    请告知。谢谢大家!

    3 回复  |  直到 15 年前
        1
  •  5
  •   hoju    16 年前

    使用如下内容:

    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
  •  2
  •   pajton    16 年前

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

    你可以看到 wget(1) man page 更多信息。

        3
  •  2
  •   Jacob    15 年前

    如果不想使用开放代理,请签出 ProxyMesh 它可以为您进行IP旋转/随机化。