原文连接:https://www.fkomm.cn/article/...html
此次介绍一个及其强大的爬虫框架---Scrapy,Scrapy由 Python 编写,是一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途普遍,能够用于数据挖掘、监测和自动化测试。
不管是在windows仍是mac以及linux下,均可以是用pip工具进行快速安装:python
$ pip install scrapy
linux
这里推荐一个很是好用的Python调试shell:ipython。web
ipython是一个python的交互式shell,比默认的python shell好用得多,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多颇有用的功能和函数。学习ipython将会让咱们以一种更高的效率来使用python。同时它也是利用Python进行科学计算和交互可视化的一个最佳的平台。shell
咱们依旧用pip工具进行安装:数据库
$ pip install ipython
windows
首先,咱们得明白一点,Scrapy不是一个功能函数库,而是是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架。简单的说,他是一个半成品,能够帮助用户简单快速的部署一个专业的网络爬虫。若是说前面咱们写的定制bs4爬虫是“手动挡”,那Scrapy就至关于“半自动档”的车。bash
其次,Scrapy 使用了 Twisted(其主要对手是Tornado)异步网络框架来处理网络通信,能够加快咱们的下载速度,不用本身去实现异步框架,而且包含了各类中间件接口,能够灵活的完成各类需求。网络
框架的力量,用户只须要定制开发几个模块就能够轻松的实现一个爬虫,用来抓取网页内容以及各类图片,很是之方便。多线程
首先来一张框架总体的图:
从图中咱们能够清楚的看到,整个框架一共分为五个部分:
这五个部分互相协做,共同完成了整个爬虫项目的工做。下面咱们来一个一个介绍。
Spiders这个模块就是整个爬虫项目中须要咱们手动实现的核心部分,就是相似咱们以前写的get_content函数部分,最主要的功能是 解析网页内容、产生爬取项、产生额外的爬去请求。
这个模块也是须要咱们手动实现的,他的主要功能是将咱们爬取筛选完毕的数据写入文本,数据库等等。总之就是一个“本地化”的过程。
这个模块,是Scrapy帮咱们作好的,不须要咱们本身编写,直接拿来用就行,其主要功能就是从网上获取网页内容,相似于咱们写的get_html函数,固然,比咱们本身写的这个简单的函数要强大不少
这个模块对全部的爬取请求,进行调度管理,一样也是不须要咱们写的模块。经过简单的配置就能达到更加多线程,并发处理等等强大功能。
这个模块至关于整个框架的控制中心,他控制着全部模块的数据流交换,并根据不一样的条件出发相对应的事件,一样,这个模块也是不须要咱们编写的。
Scrapy框架的数据流动:
先上一张图:
说了各个模块的做用,那么整个项目跑起来的时候,数据究竟是怎么运做的呢? 上图的数字表明数据的流向,解释以下:
Scrapy是一个很强大的爬虫框架,用起来很方便,可是要定制高级的功能就不是那么简单的了。这里只是简单的介绍了一下框架的基本原理,但具体如何使用不是一时半会可以说完的,后面我会在例子中一一展示这个框架的高级功能。
若是你想要更加系统化的学习理解这个框架,能够看看Scrapy的官方文档:[Scrapy 1.5文档]
(https://doc.scrapy.org/en/lat...,会让你受益不浅的!!!!
圆方圆学院聚集 Python + AI 名师,打造精品的 Python + AI 技术课程。 在各大平台都长期有优质免费公开课,欢迎报名收看。
公开课地址:https://ke.qq.com/course/362788