本文共 1436 字,大约阅读时间需要 4 分钟。
python爬虫之scrapy框架(对比之下,一切通俗易懂)
首先回顾一下常见的爬虫的路线方法
- 首先,调用requests库,根据url网址,获取对应的网页的html信息
- 然后,对爬取回来的html信息进行信息的搜索和采集
- 最后,将获取的信息进行相关的操作,输出或者保存
如下图
# 获取html的方法def getHTMLtext(url): return ""# 将获取的html信息提取,并将之填写到对应的表格中def fillUnivList(text): univList = list() return univList# 将已经填写好的数据进行输出,num确定你要输出的列表的项数def printUnivList(alist,num): print(alist)# main方法,将所有方法进行统揽,进而形成一个完整的程序def main(): url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2020.html" text = getHTMLtext(url) uniList = fillUnivList(text) printUnivList(uniList,40)# 总的调用main()
- 概括一下,无非就散步
- 从url中下载html页面
- 对html页面进行分析和爬取
- 将爬取的结果进行相关操作
对应的scrapy框架
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200525164328780.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JsYWNrb3V0ZHJhZ29u,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200525164325695.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JsYWNrb3V0ZHJhZ29u,size_16,color_FFFFFF,t_70)
- Downloader:根据请求的url,下载对应的html网页,相应的输出的是response对象
- Spider:爬取获得到html页面,进行信息筛选,将输入到的信息以item的形式输出。但是,一个scrapy是网站级的爬取软件,很多的网址都在对应的html页面中,所以还有可能返回对应的url爬取请求requests
- Item pipelines:对爬取的信息进行相关的操作,保存还是输出。获取Sipder的item对象,并对其进行相关的操作
- Engine:相当于一个中转站,用于协调各个部件发送信息的中专。把requests请求,发送给Spiders,让其爬取。将response对象,发送给item pipeline进行加工。等等
- Scheduler:主要负责对所有的爬取请求进行调度管理,不要要用户进行修改
数据流的三个路径
- 路径一:
- Engine从Spider出获得爬取请求Requests
- Engine将爬取请求转发给Scheduler,用于调度
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200525212049889.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JsYWNrb3V0ZHJhZ29u,size_16,color_FFFFFF,t_70)
- 路径二:
- Engine从Scheduler处获得下一个要爬取的请求
- Engine将爬取请求Requests发送给Downloader
- 爬取网页之后,Downloader进行下载,形成相应的Response对象,通过中间件发给Engine
- Engine将收到的响应通过中间件发送给Spider处理
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200525212441964.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JsYWNrb3V0ZHJhZ29u,size_16,color_FFFFFF,t_70)
- 路径三:
- Spider处理响应后产生爬取项Item和新的爬取请求Requests给Engine
- Engine将爬取项发送给Item Pipeline进行整理
- Engine将爬取请求发送给Scheduler进行下一次调度
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200525212413842.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JsYWNrb3V0ZHJhZ29u,size_16,color_FFFFFF,t_70)
- 综上
- 用户只需要将自己的爬取请求输入到对应的Spider中,同时将自己对文件的加工请求写入到对应的Item Pipeline中,所以一般使用scrapy框架都只修改Spider和Item Pipeline
转载地址:http://zggpb.baihongyu.com/