采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
当爬取很多request的时候,有些并没有去请求,直接就进入了去重的redis中,当停止的时候,重新去爬取直接就给过滤掉,在dupefilter中的request_seen并不是请求下载成功过后才执行的吗?
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
这样正确吗?,我这里的爬取一直问题
def process_request(self,request,spider): try: spider.webdriver.get(request.url) except Exception as e: request["dont_filter"]=True; yield request
这样对吗?
下载成功后也包括200和非200的状态码 所以你可以在中间件中根据返回的状态码 重新yield request并设置dont_filter=True防止被过滤掉
用的是webdriver
def process_request(self,request,spider): try: spider.webdriver.get(request.url) except Exception as e: request["dont_filter"]=True; yield request 这样对吗?
process_response吧,download出错 scrapy会自己try catch的 你只需要看http状态码判断就行了
登录后可查看更多问答,登录/注册
带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎
4.8k 30
2.6k 18
1.1k 18
1.4k 15
2.8k 15