Web scraping 如何在scrapy spider运行时获取新的令牌头

Web scraping 如何在scrapy spider运行时获取新的令牌头,web-scraping,scrapy,scrapy-middleware,Web Scraping,Scrapy,Scrapy Middleware,我正在运行一个scrapy spider,它首先使用基本请求库从我正在刮取的网站获取授权令牌。用于此操作的函数称为get_security_token()。此令牌作为标头传递给scrapy请求。问题是令牌在300秒后过期,然后我得到一个401错误。蜘蛛是否会看到401错误,再次运行get\u security\u token()函数,然后将新的令牌传递给所有未来的请求头 import scrapy class PlayerSpider(scrapy.Spider): name = 'playe

我正在运行一个scrapy spider,它首先使用基本请求库从我正在刮取的网站获取授权令牌。用于此操作的函数称为get_security_token()。此令牌作为标头传递给scrapy请求。问题是令牌在300秒后过期,然后我得到一个401错误。蜘蛛是否会看到401错误,再次运行get\u security\u token()函数,然后将新的令牌传递给所有未来的请求头

import scrapy

class PlayerSpider(scrapy.Spider):
name = 'player'

def start_requests(self):

    urls = ['URL GOES HERE']
    header_data = {'Authorization':'Bearer 72bb65d7-2ff1-3686-837c-61613454928d'}
    for url in urls:
        yield scrapy.Request(url = url, callback = self.parse,headers = header_data)


def parse(self, response):
    yield response.json()

如果它是纯垃圾,您可以在
start\u url之后添加
handle\u httpstatus\u list=[501]
然后在
parse
方法中,您需要执行如下操作:

如果response.status==501:
获取\u安全\u令牌()

如何将新的安全令牌传递到所有未来的请求以及引发错误的请求中?一旦您获得令牌
get\u security\u token()
,您就可以将这些头传递到请求
yield scrapy.request(url=your\u url,headers=headers\u with\u new\u token,callback=self.your\u callback)
。谢谢,这是有道理的。我唯一的问题是-将在
parse
方法中的
scrapy.Request
调用中发送带有\u new\u令牌的
headers\u
,但是我如何确保之后的所有请求也使用带有新令牌的
headers\u
?您可以检查带有更新令牌的请求的
response.headers
。我添加了一些代码来说明我的位置。问题是“授权”:“持有者xxx”密钥过期。也许通过我的代码,你们可以更好地描述我应该把那个变量放在哪里,这样我就可以在运行时修改它了?