0

我从 OffsiteMiddleware 创建了我的自定义 SpiderMiddleware。原始类的简单复制和粘贴,也许它存在更好的方法。

我会收集过滤后的异地域。我的管道有效。

但我不知道如何将这些项目返回到我的管道。

谢谢你的帮助。

def process_spider_output(self, response, result, spider):
    items = []
    for x in result:
        if isinstance(x, Request):
            if x.dont_filter or self.should_follow(x, spider):
                yield x
            else:
                domain = urlparse_cached(x).hostname
                if domain and domain not in self.domains_seen[spider]:
                    self.domains_seen[spider].add(domain)
                    # ***My items ===> items.append(OutboundsLinks(url = domain))***
        else:
            yield x
4

1 回答 1

1

process_spider_output() 必须返回一个可迭代的 Request 或 Item 对象。

def process_spider_output(self, response, result, spider):
    items = []
    for x in result:
        if isinstance(x, Request):
            if x.dont_filter or self.should_follow(x, spider):
                yield x
            else:
                domain = urlparse_cached(x).hostname
                if domain and domain not in self.domains_seen[spider]:
                    self.domains_seen[spider].add(domain)
                    # create an item here and yield it 
        else:
            yield x
于 2013-04-10T07:54:47.160 回答