【问题标题】:Using python request with a big list of proxies使用带有大量代理的 python 请求
【发布时间】:2017-07-15 07:20:43
【问题描述】:

我正在尝试创建一个迭代使用代理列表的程序,因此每个代理将从头到尾使用,然后重新开始。在请求中使用代理的方式似乎如下。

proxyDict = { 
              "http"  : "http://177.86.8.166:3128", 
              "http" : "http://177.223.187.126:3128" 
            }

r = requests.get(url, headers=headers, proxies=proxyDict)

我有一个很大的代理列表,如下所示。

177.86.8.166:3128
177.69.237.53:3128
177.223.187.126:3128
177.101.172.14:3128
177.185.114.89:53281
177.128.192.125:8089
177.128.210.250:8080

我考虑过使用循环将所有这些代理附加到内存中的 proxyDict var 中。比运行我的程序。这是最好的方法吗。我还想重复一个请求,以防代理无法与另一个代理一起正常工作,这应该一直持续到成功发出请求为止。我正在考虑使用 try catch 块,这是最好的方法吗?或者有没有更好的方法。

【问题讨论】:

    标签: python web proxy python-requests proxies


    【解决方案1】:

    虽然我使用了 grequests,但我刚刚做了类似的事情。给你一些想法..我会为你的请求添加一个超时,否则你的代码将挂起:

    >>>> r = requests.get(url, headers=headers, proxies=my_proxy, timeout=5)
    

    每个请求都会有一个status_code,所以用它来检查请求是否成功,我通常会尝试几次以防万一例如超时:

    >>> import requests
    >>> r = requests.get('http://notarealsiteatall.org/status/404')
    >>> r.status_code
    404
    

    然后,如果请求失败 5 次,您可以移动到下一个代理。

    if tries > 5:
        my_proxy = new_proxy_server
    

    我刚刚创建了一个列表并执行了一个 for 循环遍历它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-01
      • 2022-01-19
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2019-04-18
      相关资源
      最近更新 更多