scrapy的介绍

scrapy框架学习的课程概要

  1. scrapy的基础概念
  2. scrapy的工作流程
  3. scrapy的入门使用
  4. scrapy的深入
  5. crawlspider的使用

为什么要学习scarpy

scrapy的介绍
我们之所以学习scrapy不是因为它能够帮助我们解决剩下的10%的爬虫需求,而是因为它能够大幅度地提高我们的爬虫效率,让我们的爬虫变得更快更强。

什么是scrapy

scrapy是一个为了***爬取网站数据、提取结构性数据***而编写的应用***框架***,我们只需要实现少量的代码,就能够快速地抓取

框架&模块

模块

我们之所以说requests是一个模块,是因为requests只能够帮助我们发送请求获取响应

框架

它能够帮助我们解决一种特定的需求下的所有功能,每个功能可能都是一种模块
比如说scrapy框架:发送请求获取响应的模块、提取数据的模块、保存数据的模块

总结

一个框架是包含着很多的模块的。
框架是为了解决一种特定的问题,因此,它把所有的小的内容都独立出来,独立成一个一个的模块,后面呢,我们在特定的步骤中使用特定的模块就可以了。相当于框架是一个大而全的东西,而模块只是能够帮助我们实现了一个特定的功能。

scrapy使用了Twisted异步网络框架,可以加快我们的下载速度。

多线程爬虫中或者是我们的爬虫中速度最慢的地方就是发送网络请求的那个地方,因为:
当我们的请求发送出去,也就是当我们使用requests.get()之后,之后的事情都是我们不可控的
也就是说,当我们的请求发送出去之后,之后发生了什么事情都是我们没有办法操纵的

  • 网络出现波动
  • 对方服务器需要多长时间才能够给我们返回响应

我们必须在那里等着,等服务器返回响应之后我们才能够对响应进行处理
我们也可以不等,发送完一个请求之后呢,我们再使用另一个线程再发送一个请求,这样速度也就会更快一些

Twisted异步网络框架

twisted

scrapy的介绍

异步和非阻塞的区别

scrapy的介绍
操作func1对应的结果是return1,如果在拿到return1之前我们是出于一个等待return1的状态,这就是一个阻塞的状态
我们调用了func1,但是并没有在那里等着func1的结果return1,而是立马调用了另外的一个函数或者操作func2,那这就是一个非阻塞的状态
如果说我们在完成一件事情的过程中存在着大量的阻塞状态,那么这个过程就是一个同步的过程
如果说我们在完成一件事情的过程中并没有阻塞的状态,而是通通都是非阻塞状态的话,也就是说我们在拿到结果之前都没有在等,而是在做一些别的事情,那么这个过程就是一个异步的过程
状态:阻塞 非阻塞
过程:同步 异步
侧重点是不一样的,一个是状态,一个是过程

异步:调用在发出之后,这个调用就直接返回,不管有无结果
非阻塞:关注的是程序在等待调用结果(消息,返回值)时的状态,指在不能立刻得到结果之前,该调用不会阻塞当前线程。