原因:深浅拷贝的问题
解决:不要直接传递item,将复制之后的item传递给meta即可
# 问题代码
class XiaoshuoSpider(scrapy.Spider):
name = "example"
allowed_domains = ["www.example.com"]
start_urls = ["www.example.com"]
def parse(self, response):
...
url = ...
yield scrapy.Request(url=url,
callback=self.detail_parse,
meta={'item':item})
# 修改后
import copy
class XiaoshuoSpider(scrapy.Spider):
name = "example"
allowed_domains = ["www.example.com"]
start_urls = ["www.example.com"]
def parse(self, response):
...
url = ...
yield scrapy.Request(url=url,
callback=self.detail_parse,
meta={'item':copy.deepcopy(item)})