ScrapyRedis Crawl不会继续爬取

来源:1-1 python分布式爬虫打造搜索引擎简介

TT2_X

2018-07-12

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

写回答

3回答

TT2_X

提问者

2018-07-13

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
0

TT2_X

提问者

2018-07-13

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

这样对吗?

0
0

bobby

2018-07-13

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

0
5
TT2_X
报错过后就没有继续爬取了
2018-07-13
共5条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5795 学习 · 6290 问题

查看课程