使用带有大量代理的python请求

时间:2017-07-15 07:20:43

标签: python web proxy python-requests proxies

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

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块这是最好的方法吗?或者有更好的方法。

1 个答案:

答案 0 :(得分:0)

我刚做了类似的事情,虽然我使用了问候。对你有几点想法..我会在你的请求中添加超时或你的代码会挂起:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

     switch (requestCode)
        {
            case 7:
                /*case 7 for image results and display image in imageview via Uri*/
                if (resultCode == RESULT_OK)
                {
                    Uri imageUri = data.getData();
                    ImageViewHolder.setImageURI(imageUri);
                }
                return;
           default:
                return;
        }
}

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

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

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

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

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

相关问题