我使用this script在scrapy中随机化代理。问题是,一旦它为请求分配了代理,它就不会因为这段代码而分配另一个代理:
$("tr:has(.trigger):has(.dialog)").each(function() {
var row = this
var dialog = $(".dialog", row).dialog({
autoOpen: false,
position: 'center',
title: 'definizione',
draggable: true,
width: 480,
height: 380,
resizable: true,
modal: true,
show: 'slide'
});
$(".trigger", row).click(function() {
dialog.dialog("open");
});
})
这意味着如果有一个错误的代理没有连接到任何东西,那么请求将失败。我打算像这样修改它:
def process_request(self, request, spider):
# Don't overwrite with a random one (server-side state for IP)
if 'proxy' in request.meta:
return
从而让它在当前的代理失败5次时分配新的代理。我假设如果我在if request.meta.get('retry_times',0) < 5:
return
中将RETRY_TIMES
设置为20,那么请求将失败,直到4个不同的代理每次尝试5次为止。
我想知道这是否会导致任何问题。据我了解,首先检查的原因是有状态交易,例如那些依赖登录的交易,或者可能是cookie。那是对的吗?
答案 0 :(得分:1)
我碰到了同样的问题。 我improved aivarsk/scrapy-proxies。我的中间件由基本的RetryMiddleware继承并尝试使用一个代理RETRY_TIMES。如果代理不可用,则中间件会更改它。
答案 1 :(得分:0)