一、Scrapy的定义

Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。【是纯python实现的框架】

二、Scrapy框架的安装

pip install scrapy(有可能还需要安装其他的依赖库等【我安装时直接输入此命令进行安装的,中间有报错,但是还是重复此命令操作,最后安装好了】)

三、Scrapy框架的整体架构和组成

官方的Scrapy的架构图如下:

其中,图中绿色的是数据的流向。

1)架构说明:

Scrapy Engine(引擎):负责SpidersItemPipelineDownloaderSchedule中间的通讯,信号、数据传递等【处理整个系统的数据流处理,出发事物,框架的核心】。
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之后,返回给SpidersSpiders的 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的讲解相关推荐

  1. 精通python爬虫框架-精通Python爬虫框架Scrapy.pdf

    作 者 :(美)迪米特里奥斯·考奇斯·劳卡斯(Dimitrios Kouzis Loukas)著:李斌译 出版发行 : 北京:人民邮电出版社 , 2018.02 ISBN号 :978-7-115-47 ...

  2. 网络爬虫框架Scrapy简介

    作者: 黄进(QQ:7149101) 一. 网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本:它是一个自动提取网页的程序,它为搜索引擎从万维 ...

  3. python常用命令汇总-Python爬虫框架Scrapy常用命令总结

    本文实例讲述了Python爬虫框架Scrapy常用命令.分享给大家供大家参考,具体如下: 在Scrapy中,工具命令分为两种,一种为全局命令,一种为项目命令. 全局命令不需要依靠Scrapy项目就可以 ...

  4. python爬虫scrapy安装_零基础写python爬虫之爬虫框架Scrapy安装配置

    前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...

  5. 爬虫教程( 2 ) --- 爬虫框架 Scrapy、Scrapy 实战

    From:https://piaosanlang.gitbooks.io/spiders/content/ scrapy-cookbook :https://scrapy-cookbook.readt ...

  6. 用 Python 爬虫框架 Scrapy 爬取心目中的女神

    From :http://www.cnblogs.com/wanghzh/p/5824181.html 本博文将带领你从入门到精通爬虫框架 Scrapy,最终具备爬取任何网页的数据的能力. 本文以校花 ...

  7. 开源 Python网络爬虫框架 Scrapy

    开源 Python 网络爬虫框架 Scrapy:http://blog.csdn.net/zbyufei/article/details/7554322 介绍 所谓网络爬虫,就是一个在网上到处或定向抓 ...

  8. pythonscrapy爬虫安装_零基础写python爬虫之爬虫框架Scrapy安装配置

    前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...

  9. python爬虫scrapy爬取新闻标题及链接_python爬虫框架scrapy爬取梅花网资讯信息

    原标题:python爬虫框架scrapy爬取梅花网资讯信息 一.介绍 本例子用scrapy-splash爬取梅花网(http://www.meihua.info/a/list/today)的资讯信息, ...

最新文章

  1. WMI技术介绍和应用——查询文件夹信息
  2. SpringInAction--Spring Web应用之SpringMvc 注解配置
  3. 2020年第十五届全国大学生智能汽车竞赛浙江赛区比赛成绩分析
  4. 目标检测中背景建模方法
  5. 从源代码角度分析ViewStub 疑问与原理
  6. java布局管理怎么有图片_java-用于背景图像和文本的布局管理器
  7. zabbix 安装_安装zabbix
  8. 测试用例编写注意事项
  9. H3C 防火墙无法ping通端口
  10. OJ系统里用BufferedReader提高效率
  11. 百度将砸钱100多亿元建云计算中心(2012-09-03)
  12. html5扫面二维码逻辑
  13. C#遍历文件夹下所有文件
  14. python画正切函数图像_python的pygal模块绘制反正切函数图像方法
  15. CameraLink传输协议
  16. 嵌入式和单片机的区别
  17. 各代iphone尺寸_历代iPhone机身厚度对比: 6代最薄, iPhone X 难进前五
  18. VScode开发PHP的必要插件
  19. 这就是最适合程序员的云笔记?
  20. 戴尔寄希望于区块链在印度服务器市场保持竞争力

热门文章

  1. WINCE读取系统数据或系统配置信息
  2. 照片如何转换成pdf
  3. 随机函数计算机,随机函数
  4. 2019ICPC南昌网络赛总结
  5. 为什么说python入门很简单,但是在你这很难?
  6. 计算机类论文综述的写法(转…
  7. 微信小程序、小游戏,组件化开发框架wepy开发资源汇总分享
  8. web前端工程师需要掌握哪些知识
  9. VS2019配置GDAL2教程
  10. Paragon NTFS使用教程:处理安装分卷失败