Python 用于跳过某些页面的scrapy中间件

Python 用于跳过某些页面的scrapy中间件,python,scrapy,Python,Scrapy,我只想从“name”包含一些模式的页面获取数据 我想跳过其他页面 现在是这样 def parse_item(self, response): item=Item() item['name']=response.xpath('//title//text()').extract().first() if "pattern" not in item['name']: return [] else: return item 如何将其作为中间件?由于它提供了过程\u响应,

我只想从“name”包含一些模式的页面获取数据 我想跳过其他页面

现在是这样

def parse_item(self, response):
  item=Item()
  item['name']=response.xpath('//title//text()').extract().first()
  if "pattern" not in item['name']:
    return []
  else:
    return item
如何将其作为中间件?

由于它提供了
过程\u响应
,因此您应该使用

从scrapy.exceptions导入IgnoreRequest

class SkipMiddleware(object):
    def process_response(self, request, response, spider):
        if spider.name == 'myspider' and request.callback == spider.parse_item:
            if 'pattern' not in response.xpath('//title//text()').extract_first():
            raise IgnoreRequest
        return response

记住回答我自己的问题很难过,但是我能做什么呢

   def process_response(self,request, response, spider):
        if not spider._rules:
            return response
        rule_index=request._meta.get('rule',None)

        response_callback=None
        if rule_index != None:
            rule = spider._rules[rule_index]
            response_callback=rule.callback


        if response_callback and response_callback == getattr(spider,self.settings['PARSE_FUNCTION']):
            ## do something
        return response

但它对所有页面都是扫描,只对parse_item()进行扫描?从未想过使用中间件来处理这种痛苦+1,感谢扫描在init?request.callback中获取蜘蛛名称始终_response_下载