在用scrapy框架的时候在很多情况下会出现要爬取一个列表页面和一个详情页面的情况,这个时候通常会使用yield 来发起一个请求,并通过 callback 参数为这个请求添加回调函数,在请求完成之后会将响应作为参数传递给回调函数,但在我们传递item的时候会出现一些问题:
在需要多次调用下面这个parse_detail() 方法的时候,会出现获取到最后一个item的情况,而且是循环调用最后一个,就像是上面yield 这一部分是个for循环,但是下面的parse方法不再循环内,所以就只能一直调用到最后一个item.
解决方法:
使用deepcopy深层次拷贝item,拷贝每一次引擎收到的item,并将其调给parse_detail()方法
好记性不如烂指头,记录工作与学习当中碰到的BUG,如有错误,还请指出