1:scrapy前导
1.1:为什么学习scrapy框架
- 是学习爬虫必备的技术
- 在面试的时候可能会提及scrapy框架
- 可以使自己的爬虫更快、更强大
1.2:什么是scrapy框架
- 是一个异步爬虫框架,可以让爬虫“飞”起来
- scrapy框架是基于异步Twisted异步网络架构的;注意:Twisted是在内部实现的异步,程序非常复杂,我们只要学会用就行了,不用知道其原理
- 内部有多线程,也就是说,可以使用多线程爬取,可快可慢
1.3:学习scrapy框架有什么优势
- 可以使爬虫更快、更强大
- 可配置性和可拓展性非常高
- 下载效率高
- 基于异步的可配置非常高
2:scrapy框架的工作流程

2.1:各个东西的名字和作用
- spiders(爬虫程序):整个爬虫的解析处理 (编写逻辑),需要自己来编写
- scrapy(引擎):整个框架的核心
- scheduler(调度器):接收从引擎发过来的url入列,在把url发送给引擎
- Downloader Middlewares(下载中间件):处理引擎和下载器之间的请求与响应(用的是比较多的),主要是编写UA、headers和代理ip,需要自己编写逻辑
- Downloader(下载器):发请求获取网页响应,得到因特网络上的网页数据
- Spiders Middlewares(爬虫中间件):爬虫中间件处理爬虫程序的响应和输出结果以及新的请求
- Item(管道):数据处理(存储数据) ,编写存储数据的地方,自己编写逻辑
2.2:工作流程
- 1:爬虫程序把url发送给引擎,由引擎管理url
- 2:引擎在把爬虫程序发送过来的url分配给调度器,调度器把发送过来的url入队列
- 3:调度器从队列中拿出一个url发送给引擎
- 4:引擎得到url,引擎通过下载中间件把url分配给下载器
- 5:下载器通过由下载中间件发送过来的url向因特网放弃请求获得网页的数据
- 6:网页数据由下载器通过下载中间件发送给引擎,由引擎管理
- 7:引擎把得到的网页数据通过爬虫中间件分配给爬虫程序,由爬虫程序来解析网页中的数据
- 8:爬虫程序把已经解析好的数据发送给引擎,由引擎管理,引擎把得到解析的数据分配给管道
- 9:管道把得到的数据通过特定的方式保存起来
- 10:继续循环上面的步骤
3:scrapy快速入门
3.1:创建scrapy步骤
- 注意:需要在电脑的控制台、PyCharm的终端支持代码
- 1:跳转地址
- 先把地址跳转到要创建scrapy项目的目录下面,这点很重要
- 2:创建scrapy框架项目
- 在这个地址之下创建scrapy项目,需要咋控制台、pycharm终端输入代码
scrapy startproject scrapy项目名字
- 3:生成一个爬虫
scrapy genpider 爬虫的名字 要获取数据的最大地址
- 4:提取数据
- 完善spider 使用xpath等解析工具,注意可以咋scarpy框架当中可以直接使用xpath类中的方法
- 5:保存数据
pipeline中保存数据
3.2:文件的意思
- 主要阐述,scarpy框架下面的文件夹的意思和功能
- items.py:定义爬取的数据,提前做一个数据封装,起一个封装数据的作用
- middlewares.py:当中有爬虫中间件类和下载中间件的类
- pipelines.py:传说中的管道,item为传到管道的数据,如果在管道这里可以打印出来数据,就可以保存数据了
- settings.py:一个设置的文件,主要是配置一些爬虫的设置
3.3:运行scarpy爬虫
- scarpy框架下面的爬虫的运行和普通的爬虫文件的运行方式不一样,需要在电脑的dos命令或者pycharm的终端输入代码才可以运行爬虫程序
- 方法一:在pycharm的终端运行代码
- 在scarpy框架下面建立一个py文件来运行爬虫
- 1:先在爬虫项目的下面新建一个py文件,在py文件中运行程序
- 2:py文件中的代码
from scrapy import cmdline
cmdline.execute("scrapy crawl 爬虫的名字".split())
# 或者
cmdine.execute(['scrapy', 'crawl','p爬虫的名字'])
3.3:scrapy框架爬虫的返回值
- scrapy框架爬虫的返回值是在pycharm的终端打印出来的
- 前面打印的数据是一些平台的配置,从 Spider opened开始,后面的数据才是爬虫从网络上爬取下面的数据
4:使用scrapy开发爬虫需要注意的事情
- 1:一定要现在setting.py文件中的请求报头中添加UA要不然返回不了数据
- 2:在使用scrapy框架的时候可以直接使用xpath这个解析方法,不需要在去添加这个模块了
- 3:在爬虫文件中的response就是爬虫爬取的源码数据,pages就是我们要编写的爬虫的解析函数
- 4:在使用xpath的时候一定一定要把标签名给写正确了