• 欢迎来到本博客,希望可以y一起学习与分享

scrapy框架爬虫简单入门(六)-设置随机User-Agent与download middleware

Python benz 10个月前 (10-10) 47次浏览 0个评论 扫描二维码
文章目录[隐藏]

Downloader Middlewares(下载器中间件)

scrapy框架,有个名为Downloader的下载器。Downloader下载器的作用是根据scrapy engine引擎发出的requests请求,去网络(Internet)下载网页,并把下载好的网页通过response返回给scrapy engine引擎。而在scrapy engine引擎与Downloader下载器相互通信之间有一个必需经过的组件–Downloader Middlewares(下载器中间件),所以,requests与response都会经过Downloader Middlewares(下载器中间件)。因此,我们可以在Downloader Middlewares(下载器中间件)中,根据需求,对requests与response进行自定义的修改,比如说,在请求网页下载的时候,需要携带User-Agent信息,那么就可以在Downloader Middlewares(下载器中间件)中对requests进行修改,让requests携带我设定好的User-Agent信息,最后把修改后的requests交给Downloader下载器去下载网页。

scrapy提供的Downloader Middlewares

scrapy框架给我们预定好了一些下载器中间件的处理代码,比如说:scrapy框架给我们提供了一个简单的User-Agent中间件代码,打开路径venv\Lib\site-packages\scrapy\downloadermiddlewares,有一个useragent.py的文件:

Downloader Middleware主要处理请求Request发出去和结果Response返回的一些回调,比如说你要加UserAgent,使用代理,修改refferer,添加cookie,或者请求异常超时处理啥的,主要有几个方法:

  • process_request(request, spider):当每个request通过下载中间件时,该方法被调用,这里可以修改UA,代理,Refferer
  • process_response(request, response, spider): 这里可以看返回是否是200加入重试机制
  • process_exception(request, exception, spider): 这里可以处理超时

注册自定义的Downloader Middleware

在settings.py中,有个DOWNLOADER_MIDDLEWARES的选项,如果有注释,去掉注释,就可以在里面注册自定义的下载器中间件。

User-Agent

User-Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

在爬虫爬取过程中,我们常常会使用各种各样的伪装来降低被目标网站反爬的概率,其中随机更换User-Agent就是一种手段。

如果我们能获取到所有可能出现的 user agent,那么我们只需要随机从这些 user agent 列表中取一条就可以了。正好,有人已经帮我们实现了这个事情。在 github 上搜索 useragent,选择 fake-useragent,作者维护了一个可变的user agent 列表,地址为 https://fake-useragent.herokuapp.com/browsers/0.1.7,这个地址是可以根据版本变化的,以前版本的链接可能已经无法访问。这里列出了所有作者维护的 user-agent(感谢作者和开源的贡献,给我们提供的方便)。那么,我们通过获取到这些 user-agent,然后随机的从这个列表中取 user-agent 就可以。

这当然是一种方法,但既然已经有了 fake-useragent,那么我们就不需要这么做了。大家也可以看帮助文档中的使用方法。

安装fake-useragent

使用命令:pip install fake-useragent安装fake-useragent

在下载器中间件使用随机User-Agent

在middlewares.py文件中定义自己的中间件:

在setting配置文件中设置一个变量RANDOM_UA_TYPE,它的功能是可以按照我们自己配置的值来选择useragent:

当然了,最终我们还要把我们的RandomUserAgentDownloaderMiddleware中间件配置到setting中:

至此,完成了scrapy加随机User-Agent的需求。


文章 scrapy框架爬虫简单入门(六)-设置随机User-Agent与download middleware 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!