Scrapy不只是一个函数功能库,更是一个功能强大的网络爬虫框架。

1:Scrapy库的安装

在Pycharm中,配置的是anaconda环境,file-》settings-》Project-》Project Interpreter-》+号-》搜索scrapy-》选中Specify version-》Install Package。如果出错参照博客,配置anaconda集成环境,参照博客。
Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 [1] 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等
测试scrapy库:

2:Scrapy爬虫框架的介绍

爬虫框架是实现爬虫功能的一个软件结构和功能组件集合。可以说爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。
Scrapy爬虫框架一共包含七个部分:我们称5+2结构,其中有五个部分是主体部分,另外包含两个中间件。
五个主体部分:

两个中间件:

Scrapy框架包含三条主要的数据流路径:
(1):从SPIDERS模块经过ENGINE到达SCHRDULER,其中ENGINE从SPIDERS中获得了爬取用户的请求,我们对这种请求叫REQUESTS,请求通过SPIDERS到达ENGINE之后,ENGINE将这个爬取请求转发给SCHEDULER模块,SCHEDULER模块负责对爬取请求进行调度。
(2):从SCHEDULER模块经过ENGINE模块到达DOWNLOADER模块,并且数据从DOWNLOADER模块经过ENGINE模块到达SPIDERS模块。首先ENGINE模块从SCHEDULER获得下一个要爬取的网络请求REQUESTS,这个时候的网络请求是真实的,要去网络上去真实爬取的请求,ENGINE获得这样请求之后通过中间件发送给DOWNLOADER模块,DOWNLOADER模块拿到这样的请求之后,真实的连接互联网,并且爬取相关的网页,爬取到网页之后,DOWNLOADER模块将爬取的内容形成,形成一个响应对象RESPONSE,将所有的内容封装成RESPONSE之后,将这个响应再通过中间件到达ENGINE,最终发送给SPIDERS,应该说在这条路径中,一个真实的爬取URL的请求,经过SCHEDULER,DOWNLOADER,最终返回了相关内容,到达了SPIDERS。
(3):从SPIDERS模块经过ENGINE模块到达ITEM PIPELINES模块以及SCHEDULER模块。首先SPIDERS处理从DOWNLOADER获得的响应RESPONSE,也就是从网络中爬取的相关内容,SPIDERS处理之后产生了两种数据类型,爬取项ITEMS,另外一个数据类型是新的爬取请求REQUESTS,也就是说我们从网络上获得一个网页之后,如果这个网页中有其他链接也是我们十分感兴趣的,那么可以在SPIDERS中增加相关的功能,对新的链接发起再次的爬取。SPIDERS生成了这两个数据类型之后,将他们发送给ENGINE模块,ENGINE模块收到了两类数据之后,将其中的ITEMS发送给ITEM PIPELINES,将其中的REQUESTS发送给SCHEDULER进行调度,从而为后期的数据处理以及再次启动网络爬虫请求提供了新的数据来源。
总结:
Scrapy框架一共有这三条数据流的主要路径,我们可以看到,在这个路径之中,ENGINE控制着各个模块的数据流,并且它不断的从SCHEDULER获得真实要爬取的请求,并且将这个请求发送给DOWNLOADER,整个框架的执行是从向ENGINE发送第一个请求开始到获得所有链接的内容,并将所有的内容处理后放到ITEM PIPELINES为止,所以我们说这个框架的入口是SPIDERS,出口是ITEM PIPELINES。在这个框架中,我们知道Scrapy框架是5+2结构,其中的ENGINE,SCHEDULER、DOWNLOADER模块都是已有的实现,用户不需要去编写它们,它们会按照既定的功能去完成它的任务。用户需要去编写的是SPIDERS模块和ITEM PIPELINES模块,其中SPIDERS模块用来向整个框架提供要访问的URL链接,同时要解析从网络上获得的页面的内容,而ITEM PIPELINES模块负责对提取的信息进行后处理。由于在这个框架下,用户编写的并不是完整的大片的代码,而仅仅是对SPIDERS和ITEM PIPELINES中已有的代码的框架或者模板进行编写,所以我们也将这种代码的编写的方式叫做配置。相当于用户在Scrapy爬虫框架下,经过简单的配置,就可以实现这个框架的运行功能,并且最终完成用户的爬取需求。

3:Scrapy爬虫框架的解析

**ENGINE:**不需要用户修改;整个框架的核心;控制所有模块之间的数据流;任何模块和模块之间的数据流动都要经过ENGINE模块的调度;根据条件触发事件
**DOWNLOADER:**根据请求下载网页;不需要用户修改。
**SCHEDULER:**对所有爬取请求进行调度管理。对于一个中规模爬虫,可能一时间有很多很多的对网络的爬取请求,那么这些请求那些该先访问,那些该后访问,这就是由SCHEDULER模块进行调度的,那么这里边的调度方法和调度功能也相对的固定,因此用户也不需要对SCHEDULER模块进行修改。
**DOWNLOADER MIDDLEWARE:**中间件实施ENGINE、SCHEDULER和DOWNLOADER之间进行用户可配置的控制。简单说就是用户可以通过这个中间件的编写来修改、丢弃、新增向网络访问的请求或者修改、丢弃、新增网路返回的响应。用户可以编写配置代码。对一般的使用,如果用户不需要对request或者response进行修改的时候,用户可以不更改这个中间件。
**SPIDERS:**解析DOWNLOADER返回的响应(RESPONSE);能够产生爬取项(scraped item);产生额外的爬取请求(Request),简单说,它向整个框架提供了最初始的访问链接,同时对每次爬取回来的内容进行解析,再次产生新的爬取请求,并且从内容中提取出相关的数据,它是整个爬虫框架最核心的单元。
**ITEM PIPELINES:**以流水线方式处理SPIDER产生的爬取项;它由一组操作顺序组成,类似流水线,二秘阁操作是一个ITEM PIPELINE类型,每组操作对ITEM进行一个处理。可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库。需要用户编写配置代码。
**SPIDER MIDDLEWARE:**中间件,目的是对SPIDER产生的请求和爬取项的再处理;功能包括修改、丢弃、新增请求或爬取项,用户可以再中间件中编写配置代码。
总结:我们重点编写的是SPIDERS模块和ITEM PIPELINES模块,用户为了去操作其中的数据流,对数据流进行一定的控制,可以通过两个中间件,对其中的REQUESTS、RESPONSE和ITEMS做一定的操作。

4:requests库和Scrapy爬虫的比较



5:Scrapy爬虫的常用命令




在Scrapy框架下,一个工程是一个最大的单元,一个工程可以相当于一个大的Scrapy框架,而在Scrapy框架中,可以存在多个爬虫,每一个爬虫相当于框架中的一个Spider模块。

6:Scrapy爬虫的第一个实例


产生步骤:
步骤1:建立一个Scrapy爬虫工程,选取D://pycodes文件下创建
cd /d D:/pycodes进入pycodes文件。




这里部署的概念是指将这样的爬虫放在特定的服务器上并且在服务器上配置好相关的操作接口,对于我们本机使用的爬虫来讲,我们不需要改变部署的爬虫文件。

如果我们希望优化爬虫功能,我们需要修改settings.py文件中的对应的配置项。spiders/目录下存放的是python123demo工程中所建立的爬虫。


这条代码的作用是生成一个名称为demo的爬虫 ,但这条命令的作用仅限于生成demo.py。

后边的python123.io是传入的allowed_domains参数,指的是这个爬虫在爬取网站的时候只能爬取这个域名以下的相关链接。

**start_urls:**后边以列表形式包含的一个或多个URL就是scrapy框架所要爬取页面的初始页面。
**parse():**用于处理响应,它可以解析从网络中爬取的内容并且形成字典,它同时还能够对网络中爬取的内容发现其中隐含的新的需要爬取的URL请求。

简化版代码:


7:yield关键字的使用





只有当生成器被再次调用时,才产生下一个值,而不是一次性都产生出来。

Request类:


Response类:


Item类:

在Scrapy框架下,spider对网页相关信息获取后会提取其中的信息,把其中的信息生成键值对,并且以这种方式封装成字典,这种字典就是Item类。

CSS Selector:

7:"股票数据Scrapy爬虫"实例编写

未完待续…
参考文档:
北京理工大学 嵩天老师 中国大学慕课 Python网络爬虫与信息提取

Scrapy库的安装,Scrapy爬虫框架简介相关推荐

  1. python如何安装scrapy库_python2安装scrapy库报错解决方案

    build/temp.linux-x86_64-2.7/_openssl.c:434:30: fatal error: openssl/opensslv.h: 没有那个文件或目录 compilatio ...

  2. Python3.5在Windows7环境下Scrapy库的安装

    Python3.5在Windows7环境下Scrapy库的安装 忙活了一下午,总算是把Scrapy库给装完了,记下来给需要帮助的人 首先安装的环境:Windows7 64位 Python的版本是:3. ...

  3. 【小白学爬虫连载(1)】-爬虫框架简介

    欢迎大家关注公众号[哈希大数据] [小白学爬虫连载(1)]-爬虫框架简介 [小白学爬虫连载(2)]--Requests库介绍 [小白学爬虫连载(3)]--正则表达式详细介绍 [小白学爬虫连载(4)]- ...

  4. 腾讯云主机Python3环境安装PySpider爬虫框架过程

    利用腾讯云服务器我们可以玩好多的技术,前面的我给大家分享的大多与网站和一些服务有关,今天我给大家分享有关腾讯云主机Python3环境安装PySpider爬虫框架过程 大家好,本篇文章为大家讲解腾讯云主 ...

  5. scrapy安装_爬虫框架Scrapy简介与安装

    Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...

  6. python3安装scrapy及使用方法(爬虫框架)

    安装: sudo pip3 install lxml sudo apt-get install python-dev sudo apt-get install build-essential sudo ...

  7. Scrapy+Scrapy-redis+Scrapyd+Gerapy 分布式爬虫框架整合

    简介:给正在学习的小伙伴们分享一下自己的感悟,如有理解不正确的地方,望指出,感谢~ 首先介绍一下这个标题吧~ 1. Scrapy:是一个基于Twisted的异步IO框架,有了这个框架,我们就不需要等待 ...

  8. pycharm中scrapy库的安装以及创建

    python中scrapy库应用实例 首先,你已经安装好了pycharm 第一步,安装库,我们要知道pycharm有非常好用的库的安装,我们点击file->settings----->进入 ...

  9. python3安装scrapy教程_安装Scrapy教程

    Scrapy,是基于python的网络爬虫框架,它能从网络上爬下来信息,是data获取的一个好方式.于是想安装下看看. 进到它的官网,安装的介绍页面 有3种装法,一个是从pip,一个是从源码编译,一个 ...

  10. scrapy python3教程_python3安装scrapy教程_安装Scrapy教程

    Scrapy,是基于python的网络爬虫框架,它能从网络上爬下来信息,是data获取的一个好方式.于是想安装下看看. 进到它的官网,安装的介绍页面 有3种装法,一个是从pip,一个是从源码编译,一个 ...

最新文章

  1. 如何在Epower工作流平台(企业流程管理平台)上建立OA系统
  2. 73.关系操作有哪些?
  3. SpringBoot使用Jsp
  4. android蓝牙设置名称流程,Android 8 设置蓝牙名称 流程
  5. java mvc实例_Java Web实现的基本MVC实例分析
  6. express中的错误处理
  7. 七种方式教你在 SpringBoot 初始化时搞点事情
  8. 修改PHP上传文件的大小限制(post)
  9. Java中的标识符,关键字以及变量和常量
  10. html怎么画表格边框,WEB 制作1px边框表格的几种方法
  11. 搜索引擎提交软件_SEO程序员一个会关键词优化的半个程序玩家搜索引擎优化
  12. 趁我们还年轻,就应该奋斗
  13. WLAN适配器故障(消失)的最快解决办法
  14. python学习 Day08 字符串和正则表达式
  15. SpringBoot单元测试RunWith注解无法解析
  16. gpu云服务器运行游戏_GPU云服务器可以挂在大型游戏吗
  17. RLC并联谐振电路分析
  18. 时间序列ARMA中p,q选择
  19. 2020上半年10大典型工业网络安全事件
  20. C++ 程序设计作业 航空票务管理系统

热门文章

  1. 通过CocoCut插件和m3u8下载器下载网页视频并转换成mp4格式
  2. Excel2007快捷键大全
  3. 最全Java后端技术栈
  4. 怎么使用计算机操作鼠标,新手学电脑如何使用鼠标
  5. wget无法批量下载气象数据的解决方案(Python、迅雷批量下载气象数据方法)
  6. 如何理解泊松分布(Poisson Distribution)
  7. 模板引擎template.js
  8. 即时聊天软件开发体会
  9. 安科瑞综合能效管理系统在数据中心的应用
  10. PrintShield打印监控系统