python - 如何知道scrapy蜘蛛当前使用的是哪个用户代理?

标签 python scrapy attributes

我想知道如何访问当前使用的用户代理。 例如,我想在此过程中在终端中打印:当前用户代理是 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML,如 Gecko) Chrome/22.0.1207.1 Safari/537.1 或在日志文件中。我如何使用 scrapy 访问它?

版本:Scrapy 1.5.2

最佳答案

如果用户代理设置如下 solution

可以使用:

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']))

使用这个solution无论是否,都可以使其出现在蜘蛛类的任何方法中,如下所示:

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']))

发生的变化是添加了响应

关于python - 如何知道scrapy蜘蛛当前使用的是哪个用户代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55658640/

相关文章:

python - 从脚本抓取抓取总是在抓取后阻止脚本执行

ios - 对 UITextView 中的选定文本应用粗体或斜体

c# - 属性是否可以禁止目标类实现公共(public)构造函数?

jquery - 如何将属性ID的值存储到变量中? Jquery JavaScript

python - Azure Linux Python Webapp ImportError : libodbc. so.2 无法打开共享对象文件

python - ImageDataGenerator 是否会向我的数据集添加更多图像?

用于嵌套字典键的 Python 生成器

python - Python 类型提示(注释)是否会导致一些运行时影响?

python - 如何在 Scrapy 中使用全局变量解析响应?

python - 如何在 Jupyter 中运行 Scrapy 项目?