爬虫框架Scrapy框架的介绍 一看就明白
Scrapy功能非常强大,爬取效率高,相关扩展组件多,可配置和可扩展晨读非常高,它几乎可以应对所有反爬网站,是目前Python中使用最广泛的爬虫框架。Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬虫。
1.架构介绍
我们先了解一下Scrapy框架的机构,如下图所示
它可以分为如下的几个部分:
Engine:引擎,处理整个系统的数据流处理、触发事务,是整个框架的核心。
Item:项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该Item对象。
Scheduler:调度器,接受引擎发过来的请求并将其加入队列中,在引擎再次请求的时候将请求提供给引擎。
Downloader:下载器,下载网页内容,并将网页内容返回给蜘蛛。
Spiders:蜘蛛,其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果合新的请求。
Item Pipeline:项目管道,负责处理由蜘蛛从网页中抽取的项目,它的主要任务式清洗、验证和存储数据。
Downloader Middlewares:下载器中间件,位于引擎和下载器之间的钩子框架,主要处理引擎与下载器之间的请求及响应。
Spider Middlewares:蜘蛛中间件,位于引擎和蜘蛛之间的钩子框架,主要处理蜘蛛输入的响应和输出的结果及新的请求。
2.数据流
Scrapy中的数据流由引擎控制,数据流的过程如下。
(1)Engine首先打开一个网站,找到处理该网站的Spider,并向该Spider请求第一个要爬去的URL。
(2)Engine从Spider中获得到第一个爬取的URL,并通过Scheduler以Request的形式调度。
(3)Engine向Scheduler请求下一个要爬取的URL。
(4)Scheduler返回下一个要爬取的URL给Engine,Engine将URL通过Downloader Middlewares转发给Downloader下载。
(5)一旦页面下载完毕,Downloader生成该页面的Response,并将其通过Downloader Middlewares发送给Engine。
(6)Engine从下载器中接收到Response,并将其通过Spider Middlewares发送给Spider处理。
(7)Spider处理Response,并返回爬取到的Item及新的Request给Engine。
(8)Engine将Spider返回的Item给Item Pipeline,将新的Request给Scheduler。
(9)重复第(2)步到第(8)步,直到Scheduler中没有更多的Request,Engine关闭该网站,爬取结束。
通过多个组件的相互协作、不同组件完成工作的不同、组件对异步处理的支持,Scrapy最大限度地利用了网络宽带,大大提高了数据爬取和处理的效率。
3.项目结构
Scrapy框架和Pyspider不同,它是通过命令行来创建项目的,代码的编写还是需要IDE。项目创建后,项目文件结构如下所示:
scrapy.cfgproject/__init__.pyitems.pypipelines.pysettings.pymiddlewares.pyspiders/__init__.pyspider1.pyspider2.py...
这里各个文件的功能描述如下。
scrapy.cfg:它是Scrapy项目的配置文件,其内定义了项目的配置文件路径、部署相关信息等内容。
items.py:它定义Item数据结构,所有的Item的定义都可以放这里。
pipelines.py:它定义Item Pipeline的实现,所有的Item Pipeline的实现都可以放在这里。
settings.py:它定义项目的全局配置。
middlewares.py:它定义Spider Middlewares和Downloader Middlewares的实现。
Spiders:其内包含一个个Spider的实现,每个Spider都有一个文件。
最后,本文介绍了Scrapy框架的基本结构、数据流过程以及项目结构,后面讲详细的了解Scrapy的用法,感受其功能的强大之处。
爬虫框架Scrapy框架的介绍 一看就明白相关推荐
- Python爬虫之scrapy框架360全网图片爬取
Python爬虫之scrapy框架360全网图片爬取 在这里先祝贺大家程序员节快乐,在此我也有一个好消息送给大家,本人已开通了微信公众号,我会把资源放在公众号上,还请大家小手动一动,关注过微信公众号, ...
- Python爬虫之Scrapy框架爬虫实战
Python爬虫中Scrapy框架应用非常广泛,经常被人用于属于挖掘.检测以及自动化测试类项目,为啥说Scrapy框架作为半成品我们又该如何利用好呢 ?下面的实战案例值得大家看看. 目录: 1.Scr ...
- Python学习笔记——爬虫之Scrapy框架
目录 Scrapy 框架 Scrapy的安装介绍 Windows 安装方式 Ubuntu 需要9.10或以上版本安装方式 入门案例 启动Scrapy Shell Item Pipeline Spide ...
- Python3爬虫之Scrapy框架的下载器中间件
Python爬虫之Scrapy框架的下载器中间件 基本介绍 下载器中间键可以为我们设置多个代理ip与请求头,达到反反爬虫的目的 下面是scrapy为我们创建好的中间件的类 下面是中间件中的下载器函数, ...
- python爬虫之Scrapy框架的post请求和核心组件的工作 流程
python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...
- scrapy获取a标签的连接_python爬虫——基于scrapy框架爬取网易新闻内容
python爬虫--基于scrapy框架爬取网易新闻内容 1.需求[前期准备] 2.分析及代码实现(1)获取五大板块详情页url(2)解析每个板块(3)解析每个模块里的标题中详情页信息 点击此处,获取 ...
- 19. python爬虫——基于scrapy框架爬取网易新闻内容
python爬虫--基于scrapy框架爬取网易新闻内容 1.需求 [前期准备] 2.分析及代码实现 (1)获取五大板块详情页url (2)解析每个板块 (3)解析每个模块里的标题中详情页信息 1.需 ...
- python爬虫——用Scrapy框架爬取阳光电影的所有电影
python爬虫--用Scrapy框架爬取阳光电影的所有电影 1.附上效果图 2.阳光电影网址http://www.ygdy8.net/index.html 3.先写好开始的网址 name = 'yg ...
- 爬虫之Scrapy框架爬取彼岸壁纸案例分享
爬虫之Scrapy框架爬取彼岸壁纸案例分享 前段时间在网上看到有人爬取了彼岸壁纸的案例,由于爬取的图片较多,爬取速度感觉不快,所以就自己写了个Scrapy框架,个人觉得爬取速度快多了. 代码如下. 文 ...
- 14. python爬虫——基于scrapy框架爬取糗事百科上的段子内容
python爬虫--基于scrapy框架爬取糗事百科上的段子内容 1.需求 2.分析及实现 3.实现效果 4.进行持久化存储 (1)基于终端指令 (2)基于管道 [前置知识]python爬虫--scr ...
最新文章
- jquery autocomplete demo
- 网络设置计算机,怎么重置电脑网络设置
- 比较两个字符串是否相等
- 《黑客与画家》读后感:你对技术一无所知(一些金句)
- linux echo命令的-n、-e两个参数
- 事件 ID 6008问题
- FB/IB多代事务结构详解--对FB事务最好的讲解
- 天翼云从业认证课后习题(第一章和第二章)
- WebService C#开发/调用
- LeetCode 1124. 表现良好的最长时间段(单调栈/哈希)
- [codevs1262] 不要把球传我 数论+组合数学
- linux c普通用户怎么判断键盘是否按动_网络没问题,电脑却无法联网怎么办?win10无法联网搞定方式举例...
- RDD和DataFrame和Dataset比较
- Python3数据结构总结(列表list,元组tuple,集合set,字典dict,堆栈stack,队列queue和遍历技巧)
- 第二节:使用IDEA创建React APP 并启动
- selenium IDE Chrome下载安装与使用
- linux+usb串口驱动安装ch341ser,U7编程器USB转串口驱动程序CH341SER
- (二)动态白盒测试(含逻辑覆盖例子)
- 介绍5款非常棒的移动自动化测试工具
- 哈希的结构-MD系列
热门文章
- HTML换行 元素之间产生空格
- oracle数据库创建新用户
- oppo手机语音转文字其实很简单,学会这个方法,一分钟搞定课堂笔记
- 使用js动态改变input的只读属性
- signature verification failed csb502报错
- java 统计网站访问量_javaweb之统计网站访问量小案例
- java如何统计系统浏览人数_java网站如何统计访问量和在线人数实例源码
- 如何把极坐标化为直角坐标_直角坐标怎么化极坐标
- Android 学习笔记 Contacts (二)Contacts 联系人详解
- 【ChatGPT提问技巧案例】之影视分镜头脚本撰写