Scrapy框架官方网址:http://doc.scrapy.org/en/latesthtml
Scrapy中文维护站点:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.htmlpython
Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途很是普遍。ajax
框架的力量,用户只须要定制开发几个模块就能够轻松的实现一个爬虫,用来抓取网页内容以及各类图片,很是之方便。shell
Scrapy 使用了 Twisted['twɪstɪd]
(其主要对手是Tornado)异步网络框架来处理网络通信,能够加快咱们的下载速度,不用本身去实现异步框架,而且包含了各类中间件接口,能够灵活的完成各类需求。浏览器
Windows下安装Python: http://www.cnblogs.com/0bug/p/8228378.html网络
virtualenv的安装:http://www.cnblogs.com/0bug/p/8598458.html架构
安装Scrapy框架
1.pip install lxml 2.pip install pyopenssl 3.pip install pywin32 4.下载相应版本的twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 4.安装下载的twisted : pip install C:\Users\lichengguang\Downloads\Twisted-17.9.0-cp36-cp36m-win_amd64.whl 5.pip install scrapy
scrapy经常使用命令异步
1 查看帮助 scrapy -h scrapy <command> -h 2 有两种命令:其中Project-only必须切到项目文件夹下才能执行,而Global的命令则不须要 Global commands: startproject #建立项目 genspider #建立爬虫程序 settings #若是是在项目目录下,则获得的是该项目的配置 runspider #运行一个独立的python文件,没必要建立项目 shell #scrapy shell url地址 在交互式调试,如选择器规则正确与否 fetch #独立于程单纯地爬取一个页面,能够拿到请求头 view #下载完毕后直接弹出浏览器,以此能够分辨出哪些数据是ajax请求 version #scrapy version 查看scrapy的版本,scrapy version -v查看scrapy依赖库的版本 Project-only commands: crawl #运行爬虫,必须建立项目才行,确保配置文件中ROBOTSTXT_OBEY = False check #检测项目中有无语法错误 list #列出项目中所包含的爬虫名 edit #编辑器,通常不用 parse #scrapy parse url地址 --callback 回调函数 #以此能够验证咱们的回调函数是否正确 bench #scrapy bentch压力测试
图一(绿线是数据流向)scrapy
图二(参考:https://zhuanlan.zhihu.com/p/33979115)
Scrapy Engine(引擎)
: 负责Spider
、ItemPipeline
、Downloader
、Scheduler
中间的通信,信号、数据传递等。
Scheduler(调度器)
: 它负责接受引擎
发送过来的Request请求,并按照必定的方式进行整理排列,入队,当引擎
须要时,交还给引擎
。
Downloader(下载器)
:负责下载Scrapy Engine(引擎)
发送的全部Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎)
,由引擎
交给Spider
来处理,
Spider(爬虫)
:它负责处理全部Responses,从中分析提取数据,获取Item字段须要的数据,并将须要跟进的URL提交给引擎
,再次进入Scheduler(调度器)
,
Item Pipeline(管道)
:它负责处理Spider
中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
Downloader Middlewares(下载中间件)
:你能够看成是一个能够自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件)
:你能够理解为是一个能够自定扩展和操做引擎
和Spider
中间通讯
的功能组件(好比进入Spider
的Responses;和从Spider
出去的Requests)