Если пользовательский агент установлен как в этом решении
Можно использовать:
settings.py
...
USER_AGENT_LIST = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',...,
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 OPR/48.0.2685.52'
]
...
DOWNLOADER_MIDDLEWARES = {
'chevaux_p_t.middlewares.RandomUserAgentMiddleware': 400,
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
...
}
middlewares.py
:
...
class RandomUserAgentMiddleware(object):
def process_request(self, request, spider):
ua = random.choice(settings.get('USER_AGENT_LIST'))
if ua:
request.headers.setdefault('User-Agent', ua)
#One can do this to get the current user-agent used
print("current user-agent:{}".format(request.headers[b'User-Agent']))
logging.debug("current user-agent:{}".format(request.headers[b'User-Agent']))
Используя это решение или нет, можно заставить его появляться в любом методе вашего класса пауков как:
import logging
class Spider(scrapy.Spider):
def a_method(self,response):
print("current user-agent:{}".format(response.request.headers['User-Agent']))
logging.debug("current user-agent:{}".format(response.request.headers['User-Agent']))
Какие изменения добавлены response
.