【问题标题】:Scrapy Middleware Selenium with meta带有元的 Scrapy 中间件 Selenium
【发布时间】:2020-06-08 12:54:29
【问题描述】:

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

中间件.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) 

蜘蛛.py

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

【问题讨论】:

    标签: web-scraping scrapy scrapy-middleware


    【解决方案1】:

    在我们请求 URL 的第一个函数的 yield 中,还有另一个称为 meta 的参数,我们可以通过它将详细信息从第一个函数传递给第二个函数一本字典。

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

    yield Request(url, callback=self.parse_function, meta={'Date Added':date, 'Category':category}) 
    

    在第二个函数中,我们产生的是这个元字典。这将是这样的:

    yield response.meta 
    

    我们从第二个函数得到的细节呢?我们应该在 yield 之前先将它们添加到字典中,就像添加到任何字典中一样,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2016-10-23
      • 1970-01-01
      相关资源
      最近更新 更多