Web scraping 带meta的Scrapy中间件Selenium

Web scraping 带meta的Scrapy中间件Selenium,web-scraping,scrapy,scrapy-middleware,Web Scraping,Scrapy,Scrapy Middleware,基本上,我有一个工作版本的中间件,通过selenium传递所有请求并返回HtmlResponse,问题是我还想将一些元数据附加到请求上,我可以通过spider的解析方法访问这些元数据。由于某种原因,我无法在spider的解析方法中访问它,您能帮助我吗 中间件.py def process_request(self, request, spider): request = request.replace(meta={'test': 'test'}) self.driver.get(

基本上,我有一个工作版本的中间件,通过selenium传递所有请求并返回HtmlResponse,问题是我还想将一些元数据附加到请求上,我可以通过spider的解析方法访问这些元数据。由于某种原因,我无法在spider的解析方法中访问它,您能帮助我吗

中间件.py

def process_request(self, request, spider):
    request = request.replace(meta={'test': 'test'})
    self.driver.get(request.url)
    body = self.driver.page_source
    return HtmlResponse(self.driver.current_url, body=body, encoding='utf-8', request=request) 
spider.py

def parse(self, response):
    yield {'meta': response.meta}

在我们请求URL的第一个函数中,有另一个名为meta的参数,通过该参数,我们可以在字典中将第一个函数的详细信息传递给第二个函数

例如,在第一个函数中,我们有:

yield Request(url, callback=self.parse_function, meta={'Date Added':date, 'Category':category}) 
在第二个函数中,我们得到的是这个元字典。这将是这样的:

yield response.meta 
response.meta['Brand'] = brand
response.meta['Model'] = model
response.meta['Price'] = price
我们从第二个函数中得到的细节是什么?在屈服之前,我们应该首先将它们添加到字典中,就像添加到任何字典中一样,如下所示:

yield response.meta 
response.meta['Brand'] = brand
response.meta['Model'] = model
response.meta['Price'] = price

在我们请求URL的第一个函数中,有另一个名为meta的参数,通过该参数,我们可以在字典中将第一个函数的详细信息传递给第二个函数

例如,在第一个函数中,我们有:

yield Request(url, callback=self.parse_function, meta={'Date Added':date, 'Category':category}) 
在第二个函数中,我们得到的是这个元字典。这将是这样的:

yield response.meta 
response.meta['Brand'] = brand
response.meta['Model'] = model
response.meta['Price'] = price
我们从第二个函数中得到的细节是什么?在屈服之前,我们应该首先将它们添加到字典中,就像添加到任何字典中一样,如下所示:

yield response.meta 
response.meta['Brand'] = brand
response.meta['Model'] = model
response.meta['Price'] = price