首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Scrapy在日志中的每个下载请求显示用户代理?

如何使Scrapy在日志中的每个下载请求显示用户代理?
EN

Stack Overflow用户
提问于 2014-04-18 10:59:46
回答 4查看 20.9K关注 0票数 14

我正在学习刮痕,一个网络爬行框架。

我知道我可以在Scrapy项目的settings.py文件中设置settings.py。当我运行Scrapy时,我可以在USER_AGENT日志中看到INFO的值。

这个USER_AGENT在我想要爬行的服务器的每个下载请求中都被设置。

但是,在USER_AGENT的帮助下,我正在使用多个随机。我想这个随机选择的USER_AGENT会起作用。我想确认一下。那么,如何使Scrapy 在每个下载请求中显示 USER_AGENT,以便在日志中看到USER_AGENT的值?

EN

回答 4

Stack Overflow用户

发布于 2014-12-11 15:24:28

只是一场比赛。

我实现了一个基于中间件的简单fake-useragent

多亏了fake-useragent,您不需要配置用户代理列表--它从真实世界数据库中获取它们的基于浏览器使用统计

票数 29
EN

Stack Overflow用户

发布于 2015-09-30 19:06:20

您可以通过以下方式看到它:

代码语言:javascript
复制
def parse(self, response):
    print response.request.headers['User-Agent']

您可以使用scrapy-fake-useragent python库。它工作得很好,并根据世界使用统计数据选择了用户代理。但是要小心,检查它是否已经完美地使用了上面的代码,因为您在应用它时可能会犯一些错误。仔细阅读说明书。

票数 18
EN

Stack Overflow用户

发布于 2014-04-22 12:37:43

您可以将日志记录添加到正在使用的解决方案中:

代码语言:javascript
复制
#!/usr/bin/python
#-*-coding:utf-8-*-
import random

from scrapy import log
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware

class RotateUserAgentMiddleware(UserAgentMiddleware):
    def __init__(self, user_agent=''):
        self.user_agent = user_agent

    def process_request(self, request, spider):
        ua = random.choice(self.user_agent_list)
        if ua:
            request.headers.setdefault('User-Agent', ua)

            # Add desired logging message here.
            spider.log(
                u'User-Agent: {} {}'.format(request.headers.get('User-Agent'), request),
                level=log.DEBUG
            )


    #the default user_agent_list composes chrome,IE,firefox,Mozilla,opera,netscape
    #for more user agent strings,you can find it in http://www.useragentstring.com/pages/useragentstring.php
    user_agent_list = [
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
        "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
    ]
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23152739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档