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文件中定义好的类。