当前位置:   article > 正文

【浅谈爬虫】一文解析分布式爬虫框架Scrapy的原理图与项目结构说明_爬取预测系统架构图

爬取预测系统架构图


我们做web开发需要框架,因为框架能让我们快速去开发,开发的过程更加规范、避免了重复造轮子的操作。而爬虫领域也有很多优秀的框架,其中分布式爬虫框架 Scrapygithub上得分比较高,深受爬虫人员的喜爱。

Scrapy爬虫框架是一个爬取效率高、相关扩展组件多,为了提取结构性数据而编写的开源框架。Scrapy用途非常广泛,不仅可以应用到网络爬虫中,还可以用于数据挖掘、数据监测以及自动化测试等。

Scrapy是基于Twisted的异步处理框架,架构清晰、可扩展性强,可以灵活地完成各种需求。

一、详细理解Scrapy爬虫框架

这里给出了Scrapy框架的整体架构:
在这里插入图片描述
我们来解析理解该框架的原理: (理解方式先分看各个模块功能再总的理解数据流向)

先简述一个普通的网站的爬取流程:
1、获取爬取网站的URL
2、发送请求
——>>>>>>>>>>>>>>>>>>【可能遇到请求失败,被拦截】
3、返回响应
4、进行响应数据解析
——>>>>>>>>>>>>>>>>>>【结构化数据解析,存储不同的容器中】
5、持久化存储

然后我们在去看Scrapy爬虫框架:

Scrapy Engine (框架引擎): 位于整个框架系统的中心位置,显而易见是大脑的地位,用于处理整个系统的数据流,触发各种事件,是整个框架的核心。

Scheduler(调度器): 用于接收引擎发过来的请求,添加至队列中,在引擎再次请求时将请求返回给引擎。可以理解为从URL 队列中取出一个请求地址,同时去除重复的请求地址。

Downloader(下载器): 用于从网络下载Web资源。

Spiders(网络爬虫): 从指定网页中爬取需要的信息。

Item Pipeline(项目管道): 用于处理爬取后的数据,例如数据的清洗、验证以及保存。

中间件:
Downloader Middlewares (下载器中间件): 位于Scrapy引擎和下载器之间,主要用于处理引擎与下载器之间的网络请求与响应。

Spider Middlewares(爬虫中间件): 位于爬虫与引擎之间,主要用于处理爬虫的响应输入和请求输出。

Scheduler Middewares(调度中间件): 位于引擎和调度之间,主要用于处理从引擎发送到调度的请求和响应。

二、搭建Scrapy爬虫框架

安装的过程如果出现报错,这里不做详述(每个程序员必经之路,永远是过程的见证者)。

1、使用Anaconda安装Scrapy

conda install scrapy
  • 1

2、Windows系统下安装 Scrapy

由于Scrapy爬虫框架依赖的库比较多,需要先安装twistedlxmlpyOpenSSL 以及pywin32
所有第三方库文件下载网址:第三方库镜像下载

安装扩展库的三种方式:
1、cmd命令提示行通过pip命令进行安装
2、IDE自带的第三方库安装市场安装,如:pycharm
3、库文件进行安装

三、Scrapy的基本应用

3.1 创建Scrapy项目

创建一个爬虫项目: scrapy startproject scrapyDemo
创建了一个名为 scrapyDemo的项目
在这里插入图片描述

3.2 了解Scrapy项目目录结构

在这里插入图片描述
spiders(文件夹):用于创建爬虫文件,编写爬虫规则。
__init__文件:初始化文件。
items文件:用于数据的定义,可以寄存处理后的数据,是定义爬取的字段信息。
middlewares文件:定义爬取时的中间件,其中包括SpiderMiddleware (爬虫中间件)、DownloaderMiddleware(下载中间件)。
pipelines文件:用于实现清洗数据、验证数据、保存数据,在实际爬虫项目中,主要用于爬虫数据的清洗和入库操作。
settings文件:整个框架的配置文件,主要包含配置爬虫信息,请求头、中间件等。
scrapy.cfg文件:项目部署文件,其中定义了项目的配置文件路径等相关信息。

3.2 创建爬虫

在创建的Scrapy爬虫项目中:
在这里插入图片描述
存在两句话:

cd scrapyDemo
scrapy genspider example example.com
  • 1
  • 2

在Scrapy genspider命令中,有两个参数,“example”和“example.com”。
第1个参数example是爬虫的名字,这个名字可以取英文和数字的组合,但是绝对不能为scrapy或者工程的名字。
第2个参数example.com(一级域名也可以是二、三级域名)是需要爬取的网址。
在这里插入图片描述
在这里插入图片描述
我们修改一下baidu.py看一下运行效果:

class BaiduSpider(scrapy.Spider):
    name = 'baidu'
    allowed_domains = ['baidu.com']
    start_urls = ['http://baidu.com/']

    def parse(self, response):
        print(response.body.decode)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
3.2.1 命令行运行

运行该项目在命令行输入:scrapy crawl baidu
在这里插入图片描述
在输出的日志中发现了被robots.txt协议所禁止。此时需要修改settings.py文件,改为False。
在这里插入图片描述
再次命令行输入scrapy crawl baidu运行即可。

3.2.2 main文件进行运行

Scrapy的爬虫与普通的Python文件或者前面章节中讲到的普通爬虫的不同之处在于,Scrapy的爬虫需要在CMD或者终端中输入命令来运行,不能直接运行spiders文件夹下面的爬虫文件。
我们想以python文件进行运行,那么可以创建一个main.py文件,文件中写入

from scrapy import cmdline
cmdline.execute("scrapy crawl baidu".split())
  • 1
  • 2

如下图所示:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/432950
推荐阅读
相关标签
  

闽ICP备14008679号