我在python2.7中使用scrapy0.20
这是我的密码
def process_spider_output(self, response, result, spider):
print 'process_spider_output'
for r in result:
print 'r type = {0}'.format(type(r))
if isinstance(r, Request):
key = self._get_key(r)
if self.db.has_key(key):
spider.log("Ignoring already visited: %s" % r, level=log.INFO)
print 'Ignoring already visited: {0}'.format(r)
continue
elif isinstance(r, FlexibleItem):
key = self._get_key(response.request)
self.db[key] = str(time.time())
spider.log("Writing to log: %s" % key, level=log.INFO)
print 'Writing to log {0}'.format(s)
yield r
我正在尝试打印r
的类型,我的cmd上的结果是:
r type = <class 'TestSpider.spiders.FlexibleItem.FlexibleItem'>
因此类型为FlexibleItem
但为什么第二个条件永远不会成为现实呢?我从来没见过第二份报告的打印情况
这张图片是为好心的用户谁正在帮助我现在。在
有两种可能性:
FlexibleItem
实际上不是{TestSpider.spiders.FlexibleItem.FlexibleItem
是Request
的后代。如果是这样的话,if
语句将为true,elif
语句将永远不会求值。在这种情况下,要么是伊格纳西奥说的,要么是对问题的描述不正确。在
你确定第二个条件永远不会变成真的吗?把
1/0
放在elif isinstance(r, FlexibleItem):
后面,以确保它的正确性。在在任何情况下,找出发生了什么的一个更好的方法是使用调试器。{{cd3>将在第一步之前运行
相关问题 更多 >
编程相关推荐