我正在尝试创建一个迭代使用代理列表的程序,因此每个代理将从头到尾使用,然后重新开始。在请求中使用代理的方式似乎如下。
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块这是最好的方法吗?或者有更好的方法。
答案 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循环迭代它们。