我正在学习刮痕,一个网络爬行框架。
我知道我可以在Scrapy项目的settings.py文件中设置settings.py。当我运行Scrapy时,我可以在USER_AGENT日志中看到INFO的值。
这个USER_AGENT在我想要爬行的服务器的每个下载请求中都被设置。
但是,在USER_AGENT的帮助下,我正在使用多个随机。我想这个随机选择的USER_AGENT会起作用。我想确认一下。那么,如何使Scrapy 在每个下载请求中显示 USER_AGENT,以便在日志中看到USER_AGENT的值?
发布于 2014-12-11 15:24:28
发布于 2015-09-30 19:06:20
您可以通过以下方式看到它:
def parse(self, response):
print response.request.headers['User-Agent']您可以使用scrapy-fake-useragent python库。它工作得很好,并根据世界使用统计数据选择了用户代理。但是要小心,检查它是否已经完美地使用了上面的代码,因为您在应用它时可能会犯一些错误。仔细阅读说明书。
发布于 2014-04-22 12:37:43
您可以将日志记录添加到正在使用的解决方案中:
#!/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",
]https://stackoverflow.com/questions/23152739
复制相似问题