首页 > 编程知识 正文

qpython,python爬虫框架scrapy

时间:2023-05-04 09:22:30 阅读:38543 作者:3175

作者: csdbm Python爱好者社区专栏作者

个人编号:小挖掘机

博客:文文

前些天在公司的电脑上设置了几个服务器。 我有很多想尝试的东西。 今天,我参照jxdhxc老师的爬行动物实战课程,尝试了分散型爬行动物。 没有以前想象的那么神秘,其实很简单。 我相信读了这篇文章后,不到一个小时,就会得到分散型爬行动物。

1、分布式爬行动物原理

首先,让我们看看scrapy的独立体系结构。

在scrapy独立模式下,可以看到scrapy引擎通过调度程序将请求队列中的请求发送到下载程序,以滚动页面。

那么,多个主机协作的关键是共享一个队列。

因此,单主机爬虫体系结构如下图所示。

如上所述,分布式爬虫的关键是共享requests队列,维护该队列的主机称为master,从机负责数据捕获、数据处理和数据存储,因此分布式爬虫体系结构如下图所示

队列是用什么维护的? 这里使用Redis队列来保留存储

Redis是一种高效的非关系数据库,以key-value的形式存储,结构灵活,是内存中的数据结构存储系统,处理速度快,性能好。 同时提供了队列、收藏等多种存储结构,便于队列维护。

另一个问题,怎么重? 这意味着用于避免来自多个主机的访问的请求不同。 这意味着,如果reques队列中的请求不同,则必须使用Redis提供的队列结构。 Redis提供集合数据结构,在Redis集合中存储每个请求的指纹,在请求队列中添加请求时首先验证指纹是否存在。 存在时不加入。 不存在的情况下加入。

2、环境布局

目前有专用的python库来实现分布式体系结构。 Scrapy-Redis库可以重写Scrapy的调度程序、队列等组件,方便地实现Scrapy分布式体系结构。

但是,要使用此库,必须安装Redis数据库

(1) windows安装就绪

下载完成后,安装就可以了。 很简单。 (其实这里没有使用windows的redis,但是安装起来也不麻烦。 )安装完成后,默认情况下将启动windows本地redis服务。

接下来,继续安装redis可视化工具redis桌面管理器

要下载,请选择相对稳定的版本。

安装完成后,测试本地redis环境并输入连接信息。

)2)在linux上安装redis

在linux上使用命令sudo apt-get install redis将完成安装,redis-server也将在缺省情况下启动。 接下来,必须修改配置文件,以便主机可以访问虚拟机的redis数据库。

命令:使用sudo vim /etc/redis/redis.conf进行更改:

1、保护模式设定为no :

如果不设置此选项,则在windows上访问redis,然后直接崩溃。

2、bind ip注释掉:

如果不注释掉,只有本地可以访问redis,windows无法访问。

然后重新启动redis服务,并使用命令sudo service redis restart

)3)在windows上访问虚拟机redis

既然您选择了使用虚拟机上的redis数据库维护爬网队列,然后使用windows下的可视客户端访问虚拟机下的redis。

如您所见,访问成功:

3、代码实现

要使用Scrapy-Redis实现分布式爬行器,必须在scrapy的setting.py中添加以下布局: 当然,还有很多其他可用的配置,但是这里只需要添加以下几个就可以实现分布式爬行动物。

计划程序是指使用Scrapy-Redis提供的调度程序。 DUPEFILTER_CLASS设置还原机制,两个参数设置下载队列的存储位置,即Redis数据库的位置。

实现的爬行动物是百度贴吧的爬行动物,这里不详细说明

使用winscp将代码上传到三台虚拟机,并验证三台虚拟机是否具有python运行时环境。

假设虚拟机上安装了python3,请使用命令安装以下依赖关系库:

sudo apt install python-pip

sudo pip安装脚本

sudo pip install scrapy_redis

sudo pip安装pymongo

sudo pip安装就绪

4、代码执行和效果展示

我们在三台虚拟机上分别运行我们的爬虫代码,以获取百度贴吧聊天栏前100页的信息,然后使用命令

scrapy crawl tieba

如您所见,三台虚拟机同时开始爬网。

在redis中,维持了登山队列:

在短短几分钟内,我们获得了百度贴吧聊天栏100页的3900篇帖子,保存在当地的mongodb数据库中:

分散型爬虫的练习到此结束!

如果你想学习python爬行动物,欢迎来到jddbd爬行动物课程。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。