Scrapy 框架

Scrapy简介

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)异步网络框架来处理网络通信,能够加快咱们的下载速度,不用本身去实现异步框架,而且包含了各类中间件接口,能够灵活的完成各类需求。浏览器

Scrapy安装

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架构图

图一(绿线是数据流向)scrapy

图二(参考:https://zhuanlan.zhihu.com/p/33979115)

  • Scrapy Engine(引擎): 负责SpiderItemPipelineDownloaderScheduler中间的通信,信号、数据传递等。

  • 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)

Scrapy的运做流程

相关文章
相关标签/搜索