是否有一种方法可以更改ItemLoader
中使用的响应,例如我正在解析两个页面,并且在meta中传递了my_item,因此项目加载器中的响应是第一个(我最初在其中定义了它) )。
我目前正在使用my_item.add_value('price',response.xpath('//p[@id="price"]').extract_first()
来传递此消息,因为我不能使用my_item.add_xpath('price', '//p[@id="price"]')
,因为响应是从初始页面开始的
my_item = ItemLoader(item=MyItem(),response=response)
#fill my_item
yield Request(My_url,callback=self.parse_item,meta={'my_item':my_item)
答案 0 :(得分:1)
您需要这样的东西:
def parse(self, response):
l = ItemLoader(item=YourItem(), response=response)
l.add_xpath('Field1', '...')
l.add_value('Field2', '...')
item = l.load_item()
yield scrapy.Request(
url=another_url,
callback=self.second,
meta={'item': item}
)
def second(self, response):
l = ItemLoader(item=response.meta["item"], response=response)
l.add_xpath("Field3", '...')
yield l.load_item()