爬虫框架Scrapy的讲解
一、Scrapy的定义
Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。【是纯python实现的框架】
二、Scrapy框架的安装
pip install scrapy
(有可能还需要安装其他的依赖库等【我安装时直接输入此命令进行安装的,中间有报错,但是还是重复此命令操作,最后安装好了】)
三、Scrapy框架的整体架构和组成
官方的Scrapy的架构图如下:
其中,图中绿色的是数据的流向。
1)架构说明:
》Scrapy Engine(引擎):负责Spiders
、ItemPipeline
、Downloader
、Schedule
中间的通讯,信号、数据传递等【处理整个系统的数据流处理,出发事物,框架的核心】。
》Scheduler(调度器):简单说就是队列。它负责接受引擎发送过来的Request
请求,并按照一定的方式进行整理排列,加入队列,在引擎再次请求时将请求提供给引擎。
》Downloader(下载器):负责下载Scrapy Engine(引擎)
发送的所有Requests
请求,并将其获取到的Responses
交还给Scrapy Engine(引擎)
,由引擎交给Spiders
来处理。
》Spiders(爬虫解析器):【编写xpath、正则表达式等解析策略,用于分析和处理数据】它负责处理所有Responses
,从中分析提取数据,获取Item
字段需要的数据;如果有新链接的请求(如下一页),将需要跟进的URL
提交给引擎,再次进入Scheduler(调度器)
。
》Item Pipeline(管道):它负责处理Spiders
中获取到的Item
,并进行后期处理(详细分析、过滤、存储等)的地方。
》Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件【封装代理、http头部隐藏等】。
》Spider Middlewares(Spider中间件):一个可以自定义扩展和操作引擎和Spiders
中间通信的功能组件。
2)结合下表概括了框架中各组件的作用:
3)梳理一下scrapy框架的整体执行流程:
1.Spiders
的 yeild 将 request 发送给Engine
【编写入口url(即需要请求的网站)】
2.Engine
对 request 不做任何处理,将 request 发送给Scheduler
,让它排序、入队列
3.Scheduler
排好队列后,将新的 request 请求发送给Engine
4.Engine
拿到新的 request 后,发送给Downloader
让它下载
5.Downloader
下载好后(即获取到response)之后,再发送回Engine
6.Engine
获取到response之后,返回给Spiders
,Spiders
的 parse() 方法对获取到的response进行处理,解析出 “items” 或者 "requests"
7.Spiders
将解析出来的 “items” 或者 “requests” 发送给Engine
8.Engine
获取到 “items” 或者 “requests” ,将 “items” 发送给ItemPipeline
;将 “requests” 发送给Scheduler
9.ItemPipeline
收到 “items” 后,对数据进行后期处理(详细分析、过滤、存储等)
10.Scheduler
收到 “requests” 后,对请求再进行排序、入队,再发送给Downloader
让它下载
scrapy框架是异步开发的,各个组件各司其职。
(ps:只有Scheduler
中不存在 request 时,程序才停止;如果Downloader
没有下载成功,则会返回给Engine
,让Scheduler
重新排列,再将新的 request 发送给Downloader
进行下载处理)
四、Scrapy框架的使用
1️⃣创建项目:scrapy startproject xxx
例如:
scrapy startproject tubatu_scrapy_project
2️⃣查看项目中的文件
①scrapy.cfg文件【项目的配置文件】,包含指定当前项目配置的路径(settings)、以及部署信息(deploy)
②项目文件下的items.py文件【定义数据结构】,即想要抓取哪些字段(例如名称、url等)
③项目文件下的pipelines.py文件【项目管道文件,又称数据处理管道文件】,用于编写数据的存储、清洗等逻辑。如将数据存储到json文件或mongo文件,就可以在此编写逻辑
④项目文件下的settings.py文件【项目设置文件】,可以定义项目的全局设置,一般用到哪个选项就开启并设置即可。(其中是否遵循ROBOTS协议这一项,一般设置为False)
⑤项目文件下的middlewares.py文件【定义了两个中间类的规则编写】,可以设置http的头部信息,设置代理等
⑥项目文件下的spiders文件夹【包含每个爬虫项目的实现】,解析规则就会写在此目录中,在spiders目录下编写爬虫逻辑(爬虫解析器)即可。而我们可以使用命令生成spider模板来直接编写爬虫逻辑,如下一步骤
爬虫框架Scrapy的讲解相关推荐
- 精通python爬虫框架-精通Python爬虫框架Scrapy.pdf
作 者 :(美)迪米特里奥斯·考奇斯·劳卡斯(Dimitrios Kouzis Loukas)著:李斌译 出版发行 : 北京:人民邮电出版社 , 2018.02 ISBN号 :978-7-115-47 ...
- 网络爬虫框架Scrapy简介
作者: 黄进(QQ:7149101) 一. 网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本:它是一个自动提取网页的程序,它为搜索引擎从万维 ...
- python常用命令汇总-Python爬虫框架Scrapy常用命令总结
本文实例讲述了Python爬虫框架Scrapy常用命令.分享给大家供大家参考,具体如下: 在Scrapy中,工具命令分为两种,一种为全局命令,一种为项目命令. 全局命令不需要依靠Scrapy项目就可以 ...
- python爬虫scrapy安装_零基础写python爬虫之爬虫框架Scrapy安装配置
前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...
- 爬虫教程( 2 ) --- 爬虫框架 Scrapy、Scrapy 实战
From:https://piaosanlang.gitbooks.io/spiders/content/ scrapy-cookbook :https://scrapy-cookbook.readt ...
- 用 Python 爬虫框架 Scrapy 爬取心目中的女神
From :http://www.cnblogs.com/wanghzh/p/5824181.html 本博文将带领你从入门到精通爬虫框架 Scrapy,最终具备爬取任何网页的数据的能力. 本文以校花 ...
- 开源 Python网络爬虫框架 Scrapy
开源 Python 网络爬虫框架 Scrapy:http://blog.csdn.net/zbyufei/article/details/7554322 介绍 所谓网络爬虫,就是一个在网上到处或定向抓 ...
- pythonscrapy爬虫安装_零基础写python爬虫之爬虫框架Scrapy安装配置
前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...
- python爬虫scrapy爬取新闻标题及链接_python爬虫框架scrapy爬取梅花网资讯信息
原标题:python爬虫框架scrapy爬取梅花网资讯信息 一.介绍 本例子用scrapy-splash爬取梅花网(http://www.meihua.info/a/list/today)的资讯信息, ...
最新文章
- WMI技术介绍和应用——查询文件夹信息
- SpringInAction--Spring Web应用之SpringMvc 注解配置
- 2020年第十五届全国大学生智能汽车竞赛浙江赛区比赛成绩分析
- 目标检测中背景建模方法
- 从源代码角度分析ViewStub 疑问与原理
- java布局管理怎么有图片_java-用于背景图像和文本的布局管理器
- zabbix 安装_安装zabbix
- 测试用例编写注意事项
- H3C 防火墙无法ping通端口
- OJ系统里用BufferedReader提高效率
- 百度将砸钱100多亿元建云计算中心(2012-09-03)
- html5扫面二维码逻辑
- C#遍历文件夹下所有文件
- python画正切函数图像_python的pygal模块绘制反正切函数图像方法
- CameraLink传输协议
- 嵌入式和单片机的区别
- 各代iphone尺寸_历代iPhone机身厚度对比: 6代最薄, iPhone X 难进前五
- VScode开发PHP的必要插件
- 这就是最适合程序员的云笔记?
- 戴尔寄希望于区块链在印度服务器市场保持竞争力