导语:(python语言中存在众多的爬虫框架,本文及接下来的几篇都只介绍scrapy框架)
一:整理scrapy爬虫框架组件的各种知识,了解爬虫机制的原理
1.scrapy架构:

各个组件:
引擎(EGINE)
引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分.
调度器(SCHEDULER)
用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
下载器(DOWLOADER)
用于下载网页内容, 并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的
爬虫(SPIDERS)
SPIDERS是开发人员自定义的类,用来解析responses,并且提取items,或者发送新的请求
项目管道(ITEM PIPLINES)
在items被提取后负责处理它们,主要包括清理、验证、持久化(比如存到数据库)等操作
下载器中间件(Downloader Middlewares)
位于Scrapy引擎和下载器之间,主要用来处理从EGINE传到DOWLOADER的请求request,已经从DOWNLOADER传到EGINE的响应response.
爬虫中间件(Spider Middlewares)
位于EGINE和SPIDERS之间,主要工作是处理SPIDERS的输入(即responses)和输出(即requests)

Scrapy 中的数据流由执行引擎控制,然后按以下方式进行
1.引擎获取从蜘蛛抓取的初始请求。
2.引擎在调度程序中安排请求,并要求下一个请求进行爬网。
3.3.调度程序将下一个请求返回到引擎。
4.引擎将请求发送到下载器,通过下载器中间件(请参见 process_request())。
5.下载完成后,下载器将生成响应(与该页面一起)并将其发送到引擎,通过下载器中间件。
6.引擎接收来自下载器的响应,并将其发送到蜘蛛进行处理,通过蜘蛛中间件(process_spider_input())。
7.蜘蛛处理响应,并返回刮过的项目和新的请求(跟随)到引擎,通过蜘蛛中间件(process_spider_output())。
8.引擎将处理的项目发送到项目管道,然后将已处理的请求发送到计划程序,并要求可能的下一个请求进行爬网。
9.该过程重复(从步骤 1),直到没有来自调度程序的请求。

模拟过程:
引擎:Hi!Spider, 你要处理哪一个网站?
2.Spider:老大要我处理xxxx.com。
3.引擎:你把第一个需要处理的URL给我吧。
4.Spider:给你,第一个URL是xxxxxxx.com。
5.引擎:Hi!调度器,我这有request请求你帮我排序入队一下。
6.调度器:好的,正在处理你等一下。
7.引擎:Hi!调度器,把你处理好的request请求给我。
8.调度器:给你,这是我处理好的request
9.引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求
10.下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载)
11.引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def parse()这个函数处理的)
12.Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。
13.引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。
14.管道“调度器:好的,现在就做!

2.安装scrapy框架(scrapy安装网上有很多资料,这里不再赘述)
windows系统下:
pip install scrapy
安装成功之后,在命令终端输入scrapy,提示类似如图,表示安装成功。

3.scrapy框架基本操作

新建一个scrapy项目
Scrapy startproject +项目名称
新建之后,打开有如下文件:

scrapy.cfg:配置文件,用于存储项目的配置信息。
minyan:项目的python模块,将会在这里应用代码。
Items.py:实体文件,用于定义项目的目标实体。
Middlewares.py:中间件文件,用于定义spider中间件。
Pipelines.py:管道文件,用于定义项目使用的管道。
Spiders:存储爬虫代码的目录。
settings.py:爬虫程序设置,主要是一些优先级设置,优先级越高,值越小。

创建爬虫:

scrapy genspider +爬虫名称+爬虫域名
例如:
scrapy genspider itcast ‘itcast.com’

运行爬虫:
scrapy crawl +爬虫名称

提取信息:

Xpath提可以极大的提高效率,而且不容易弄错。

保存文件:
通过管道,将爬到的数据传到管道,管道在保存到本地的文件。这种存储称为(持久化存储)。

python爬虫框架——scrapy(1)scrapy爬虫框架介绍相关推荐

  1. 最流行的python爬虫框架_Python最火爬虫框架Scrapy入门与实践

    Scrapy框架简介Scrapy 是用 Python 实现的一个为了爬取网站数据.提取结构性数据而编写的应用框架. Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 通常我 ...

  2. python爬虫scrapy安装_Python爬虫:Scrapy框架的安装和基本使用

    大家好,本篇文章我们来看一下强大的Python爬虫框架Scrapy.Scrapy是一个使用简单,功能强大的异步爬虫框架,我们先来看看他的安装. Scrapy的安装 Scrapy的安装是很麻烦的,对于一 ...

  3. python的scrapy框架的安装_Python爬虫基础(四)--Scrapy框架的安装及介绍

    Scrapy框架的介绍 安装: pip3 install Scrapy 安装测试: cmd命令行界面,输入:scrapy -h 框架安装完成: scrapy框架: 分为五个模块+两个中间件(5+2结构 ...

  4. linux scrapy 定时任务_2019Python学习教程(全套Python学习视频):Scrapy爬虫框架入门...

    Scrapy爬虫框架入门 Scrapy概述 Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来抓取Web站点并从页面中提取结构化的数据,被广泛的用于数据挖掘.数据监测和自动化测试等领 ...

  5. Python基础知识回顾及scrapy框架爬虫基础

    1.函数 函数参数:必须 默认 关键 可变 函数种类:外部 内部 匿名 lambda 装饰函数:@语法糖 函数总是要返回的 ,若没有return,None总是被返回   2.面向对象: 对象:已存在, ...

  6. python爬虫抓取分页_Scrapy爬虫框架之Scrapy爬取分页数据(一)

    Python应用场景 Scrapy 爬虫框架 课程特色 时间就是生命,浓缩才是精华 (4小时,完成了Scrapy爬虫必备知识点讲解) 课程体系完整 ( 应用场景.Scrapy体系结构.分页爬虫.整站爬 ...

  7. Python:Pycharm如何使用scrapy框架做爬虫?

    因为入门python以来一直使用pycharm,所以对着黑白的DOS不习惯,所以此次来实现使用pycharm进行实现使用scrapy框架 ①pip install scrapy(首先安装scrapy第 ...

  8. python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...

    小猪的Python学习之旅 -- 4.Scrapy爬虫框架初体验 Python 引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网 ...

  9. Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB

    ​    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...

  10. python学习(三)scrapy爬虫框架(二)——创建一个scrapy爬虫

    在创建新的scrapy爬虫之前,我们需要先了解一下创建一个scrapy爬虫的基本步骤 第一步:确定要爬取的数据 以爬取豆瓣电影数据为例: 每部电影所要爬取的信息有: 片名:<头号玩家> 导 ...

最新文章

  1. 【转载】springboot:如何优雅的使用mybatis
  2. Nature综述:从土壤到临床-微生物次级代谢产物对抗生素耐受性和耐药性的影响...
  3. 给GridView中的buttonField添加一个删除确认功能
  4. 路由框架ARouter最全源码解析
  5. 6、MySQL删除数据库(DROP DATABASE语句)
  6. 多维柔性作业调用_摆脱困境:从预定作业中调用安全方法
  7. 我的世界一个程序导致JAVA,Java地位无可动摇的12个原因
  8. 【Elasticsearch】玩转 Elasticsearch 7.8 的 SQL 功能
  9. kickstart技术安装操作系统
  10. Node.js编写CLI的实践
  11. 持续集成(CI)- 几种测试的区别(摘录)
  12. 设置SolidWorks三维设计值参数化的方法,可以导入Workbench进行优化分析
  13. Spring Aop 5种通知写法及参数JoinPoint详解
  14. java版微信三级分销完整源码
  15. [CodeForces757E]Bash Plays with Functions
  16. 人员定位管理系统保障危化品行业安全作业
  17. cross_val_score的 scoring参数值解析
  18. “打工人”都在用的邮件使用规范
  19. 相片尺寸怎么修改?手机如何整体缩小图片尺寸?
  20. TGA图像文件格式分析

热门文章

  1. 联想万全t260磁盘阵列_联想万全T168服务器板载Sata+raid系统设置图解
  2. Python的第三周学习总结
  3. 解决“Microsoft Office Word 遇到问题需要关闭。”
  4. MS Project 2007 工期、工时、资源、固定单位、固定工期、固定工时
  5. 更新Composer依赖报错处理Fatal error: Declarat…
  6. 从互联网+角度看云计算的现状与未来
  7. 华为AITO M7新车来袭,会搭载鸿蒙吗?
  8. sgu106-109
  9. 较全的OA系统功能模块需求描述
  10. photoshop污点修复画笔工具