Web scraping 带meta的Scrapy中间件Selenium
基本上,我有一个工作版本的中间件,通过selenium传递所有请求并返回HtmlResponse,问题是我还想将一些元数据附加到请求上,我可以通过spider的解析方法访问这些元数据。由于某种原因,我无法在spider的解析方法中访问它,您能帮助我吗 中间件.pyWeb 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(
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