我发现一个很坑的BUG
问题在于 self.crawl(url, save=saveItem)
中, 如果saveItem变态提前定义, 而你又有一批抓取动作, 例如:
for i in range(10):
self.crawl(url, save={'a':i})
结果是 所有抓取结果都是 sefl.crawl(url, save={'a':9}
请看实例:
结果是:
非要这样才会正常。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
很明显你的self.crawl是一个异步方法,等到执行完以后去看save参数的时候,save里面的i已经变成了最后一个i的值,解决方法很多。比如你可以利用lambda拷贝一下tid的值:
你的代码和
不同,你传给 self.crawl 的都是同一个 save 对象,然后你修改了 save 对象的内容,它们最终当然是一样的了。
你用浅拷贝试试。
save = copy.copy(response.save)
上面改过的也不对啊
你传给 self.crawl 的都是同一个 save 对象,save = copy.deepcopy(save)即可