我已经从OffsiteMiddleware创建了我的Custom 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
答案 0 :(得分: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