首页 > 解决方案 > 如何将scrapy.Response 传递给字典?

问题描述

我了解如何使用requests库执行此操作

import requests

def start_requests(self):
        token = requests.get('https://support.hpe.com/hpesc/public/km/api/coveo/search/token').text
        headers = {
            ...
            'Authorization': f'Bearer {json.loads(token)["persistentSearchToken"]}',
            ...
        }

告诉我如何使用scrapy?

一开始我想这样做:

def start_requests(self):

       token = scrapy.Request(
            url='https://support.hpe.com/hpesc/public/km/api/coveo/search/token',
            callback=self.get_token
        )
       headers = {
                ...
                'Authorization': f'Bearer {json.loads(token)["persistentSearchToken"]}',
                ...
            }
def get_token(self, response):
        return response.text

但事实证明,“token”变量不是“Response”类的对象。它是“请求”类的对象。

标签: python-3.xscrapyresponse

解决方案


尝试这个

def start_requests(self):

   yield scrapy.Request(
        url='https://support.hpe.com/hpesc/public/km/api/coveo/search/token',
        callback=self.get_token,
   headers = {
            ...
            'Authorization': f'Bearer {json.loads(token)["persistentSearchToken"]}',
            ...
        })


def get_token(self, response):
    return response.text

推荐阅读