请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于itemloader在Request之间的传递

通过课程我学习到item可以以meta的形式 meta = {"item":item} 在Request之间传递,那么如果使用的是itemloader呢?尝试过同样的方法并不能成功

正在回答 回答被采纳积分+3

1回答

bobby 2018-09-04 10:07:56

你这里说到的使用 itemloader 是什么意思呢  不太明白,能具体描述一下你的需求吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 changezyc #1
    老师您好!
    就比如存在一个item类 TestItem,正常情况下,可以 
    item = TestItem() 之后存了各种数据,如果要传到下一个request收集,可以
    yeild = Request(url, meta={"item":item}) 对吧,那同理
    
    使用 item_loader = ItemLoader(TestItem(), response=response) 收集数据也是可以,但是却不能:
    yeild = Request(url, meta={ "item_loader ": item_loader }) 
    就是不能这样传到下一级去收集数据,还是我哪里弄错了?
    回复 有任何疑惑可以回复我~ 2018-09-04 10:15:18
  • bobby 回复 提问者 changezyc #2
    这样传递数据你传递的是一个类,meta在scrapy中扮演的角色是什么需要看源码才能确定, 如果scrapy内核需要序列化这个值,但是这个值又不会序列化可能就会引起错误,你可以直接把item实例yield过去试试,为什么一定要yield你的item_loader呢
    回复 有任何疑惑可以回复我~ 2018-09-06 14:12:51
  • blowwind 回复 提问者 changezyc #3
    item = item_loader.load_item(),然后传递item就可以,这样传递的是装载后的item,里面是有数据的。如果直接传递item_loader,传递的相当于一个装载器,是没有灵魂的...
    回复 有任何疑惑可以回复我~ 2019-11-16 17:38:13
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信