scrapy中的request.headers.setdefault()是什么意思

Yix*_*uan 1 python scrapy python-requests

我想UserAgentMiddleware用沙哑的方式设定风俗。但是我不知道request.headers.setdefault('User-Agent', ua)看到它时的动作,也没有找到scrapy和requests的方法。

在哪里可以找到有关它的任何解释?

eLR*_*uLL 5

headers是一本普通的字典,因此如果该值尚不存在setdefault,那将是一种为该字典设置值的方法。

可能的解释是,仅当您尚未在Spider进程中设置中间件时,中间件才通过defaut设置User-Agent 。

您可以在蜘蛛代码中设置以下内容:

...
request.headers['User-Agent'] = 'My Custom User Agent'
yield request
Run Code Online (Sandbox Code Playgroud)

这意味着当代码到达中间件时,用户代理不会被覆盖或更改。

在此之前的其他中间件(或任何其他进程),也可以修改User-Agent,并且此代码不会更改它,因为它尊重先前设置的中间件。