scrapy.Request() 的 meta参数 数据的传递

scrapy.Request() 的 meta参数 数据的传递


在既需要解析列表页,有需要解析详情页的情况下时,
以 以下模板代码为例,因为原本只在parse函数中定义了ABC类的实例化对象item,
所以这需要将item从parse()函数中传递到parse_detail()函数中,才能继续将数据收入item中,然后一块儿传递出去。

这需要用到scrapy.Request()的 meta 参数,
在scrapy.Request()中传入,传入时需要写为字典形式,字典的键名随便起即可。

如 meta={‘abcdefg’: item}

在parse_detail()中将其取出,取出时的键名只需与上边的保持一致。取出代码示例:

item = response.meta.get(‘abcdefg’)

class RecruitnameSpider(scrapy.Spider):
	*************************

	# 解析列表页
	def parse(self, response):
		result = response.*****************
		for r in result:
            item = ABC()
            item['a'] = ***
            item['b'] = ***
            item['c'] = ***
 			******
 			
			yield scrapy.Request(
		                url=new_detail_url,
		                callback=self.parse_detail,
		                # 数据传递
		                meta={
    
    'itemes': item}
		            )

	# 解析详情页
	def parse_detail(self, response):
		item = response.meta.get('itemes')
		item['d'] = ***
		item['e'] = ***
		item['f'] = ***
		

其中ABC类是 items.py文件中定义好的类。

猜你喜欢

转载自blog.csdn.net/weixin_48964486/article/details/125383098