请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

ScrapyRedis Crawl不会继续爬取

当爬取很多request的时候,有些并没有去请求,直接就进入了去重的redis中,当停止的时候,重新去爬取直接就给过滤掉,在dupefilter中的request_seen并不是请求下载成功过后才执行的吗?

正在回答 回答被采纳积分+3

3回答

提问者 TT2_X 2018-07-13 19:28:38
def process_response(request, response, spider):
   if response.status<200 or response.status>=300:
       request["dont_filter"]=True;
       yield request

def process_request(self,request,spider):
   try:
       spider.webdriver.get(request.url)
   except Exception as e:
       request["dont_filter"]=True;
       yield request

这样正确吗?,我这里的爬取一直问题

0 回复 有任何疑惑可以回复我~
提问者 TT2_X 2018-07-13 12:58:39
def process_request(self,request,spider):
    try:
        spider.webdriver.get(request.url)
    except Exception as e:
        request["dont_filter"]=True;
        yield request

这样对吗?

0 回复 有任何疑惑可以回复我~
bobby 2018-07-13 11:40:41

下载成功后也包括200和非200的状态码 所以你可以在中间件中根据返回的状态码 重新yield request并设置dont_filter=True防止被过滤掉

0 回复 有任何疑惑可以回复我~
  • 提问者 TT2_X #1
    用的是webdriver
    回复 有任何疑惑可以回复我~ 2018-07-13 12:48:24
  • 提问者 TT2_X #2
    def process_request(self,request,spider):
            try:
                spider.webdriver.get(request.url)
            except Exception as e:
                request["dont_filter"]=True;
                yield request
    
    这样对吗?
    回复 有任何疑惑可以回复我~ 2018-07-13 12:57:51
  • bobby 回复 提问者 TT2_X #3
    process_response吧,download出错 scrapy会自己try catch的 你只需要看http状态码判断就行了
    回复 有任何疑惑可以回复我~ 2018-07-13 18:07:54
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信