scrapy 设置随机UA

爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单。

1.常规设置 UA

首先,说一下常规情况不使用 Scrapy 时的用法,比较方便的方法是利用 fake_useragent包,这个包内置大量的 UA 可以随机替换,这比自己去搜集罗列要方便很多,下面来看一下如何操作。

首先,安装好fake_useragent包,一行代码搞定:

pip install fake-useragent

然后,就可以测试了:

from fake_useragent import UserAgentua = UserAgent()for i in range(10):print(ua.random)

2.middlewares.py 中设置 UA(推荐使用,质量高)

这种方法是在 settings.py 文件中手动添加一些 UA,然后通过 random.choise 方法随机调用,即可生成 UA,这种方便比较麻烦的就是需要自己去找 UA,而且增加了代码行数量。

代码如下:

from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware
import randomclass RandomUserAgentMiddleware(UserAgentMiddleware):"""自动随机更换UA"""def __init__(self, user_agent_list):super(RandomUserAgentMiddleware, self).__init__()self.user_agent_list = user_agent_list@classmethoddef from_crawler(cls, crawler):return cls(user_agent_list=crawler.settings.get('USER_AGENT'))def process_request(self, request, spider):random_user_agent = random.choice(self.user_agent_list)request.headers.setdefault('User-Agent', random_user_agent)

然后,我们回到 settings.py 文件中调用自定义的 UserAgent,注意这里要先关闭默认的 UA 设置方法才行。

DOWNLOADER_MIDDLEWARES = {'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,'pachong.middlewares.common_download_middlewares.RandomUserAgentMiddleware': 450,# 'pachong.middlewares.common_download_middlewares.ProxyMiddleware': 700
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部