Web scraping 如何在scrapy spider运行时获取新的令牌头
我正在运行一个scrapy spider,它首先使用基本请求库从我正在刮取的网站获取授权令牌。用于此操作的函数称为get_security_token()。此令牌作为标头传递给scrapy请求。问题是令牌在300秒后过期,然后我得到一个401错误。蜘蛛是否会看到401错误,再次运行get\u security\u token()函数,然后将新的令牌传递给所有未来的请求头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
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”密钥过期。也许通过我的代码,你们可以更好地描述我应该把那个变量放在哪里,这样我就可以在运行时修改它了?