分布式爬虫:概念介绍
需求:目标网站有 2w 个url,请求并处理这些 2w 个响应数据,然后入库
方案一:单服务器爬虫
- 一个爬虫,负责2w个url,0.1*20000=2000秒
方案二:分布式爬虫,协同
- 100个爬虫,一个爬虫负责200个url,0.1*200=20秒
- 100个爬虫,同时工作
误区:多个单服务器爬虫 != 分布式爬虫
- 单服务器爬虫,它包含 自己的工作量和自己的工人
- 分布式爬虫,统一的工作量+可分配数量的工人
分布式爬虫的工作原理:
- 分布式爬虫,只包含处理响应的函数部分,不包括 目标网站的url 目标网站的url,在数据库中,分布式爬虫负责从这里取url并自行请求和处理数据 多个分布式爬虫,只需要多次启动该分布式爬虫即可。就可以做到
- 多个爬虫,同时请求数据库并获取url,然后自行处理url和响应
分布式爬虫:环境安装
1. scrapy安装 步骤:这个阶段,scrapy环境必须是完整的,安装过程略
2. python3安装scrapy-redis库
- $ pip3 install scrapy-redis
3. 安装 Redis 数据库
- windows:redis-win软件
- Ubuntu: sudo apt-get install redis
- MacOS: brew install redis Redis数据库安装好后,默认是6379端口,没有账号密码
4. Redis数据库可视化工具
- 推荐:Redis Desktop Manager
- 网址:RedisDesktop
scrapy的基本架构如下图:
最常用的CrawlSpider介绍:
CrawlSpider继承最基础的Spider,所以Spider有的方法和属性, CrawlSpider全部具备。
CrawlSpider别于Spider的特性是多了一个rules参数,其作用是定义提 取动作,可以快速的检索符合正则的路由,并非常方便的回调到函数 中。
- follow 是一个布尔(boolean)值,指定了根据该规则从response提取的链 接是否需要跟进。 如果 callback 为None, follow 默认设置为 True ,否则默认为 False 。
- rules :一个包含一个(或多个) Rule 对象的集合(list)。 每个 Rule 对爬取网站的动作定义了特定表现。 Rule对象在下边会介绍。 如果多个rule 匹配了相同的链接,则根据他们在本属性中被定义的顺序,第一个会被使用。
- URL链接提取的类LinkExtractor,主要参数为: allow:满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。 deny:与这个正则表达式(或正则表达式列表)不匹配的URL一定不 提取。
- allow_domains:会被提取的链接的domains。
- deny_domains:一定不会被提取链接的domains。
- restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。 还有一个类似的restrict_css



RetryMiddleware
- RETRY_ENABLED #默认开启
- RETRY_TIMES # 默认:2
- RETRY_HTTP_CODECS #默认:500,502,503,504,408
- RETRY_PRIORITY_ADJUST #默认:1
RedirectMiddleware
- REDIRECT_ENABLED # 默认开启
- REDIRECT_MAX_TIMES # 默认:20
- REDIRECT_PRIORITY_ADJUST # 默认:+2
其他下载器配置
- DOWNLOAD_TIMEOUT # 默认:180 【单位秒】
- DOWNLOAD_MAXSIZE # 默认:1073741824(1024MB)【单位字节】
- DOWNLOAD_WARNSIZE # 默认值:33554432(32MB)【单位字节】
- DOWNLOADER_STATS # 默认:True 【爬虫运行结束后的输出结果】
- DOWNLOAD_DELAY # 默认:0

警告
当编写CrawlSpider爬虫规则时,请避免使用 parse 作为回调函数。 由于 CrawlSpider 使用 parse 方法来实现其逻辑,如果 您覆盖了 parse 方 法,crawl spider 将会运行失败。
1977



被折叠的 条评论
为什么被折叠?



