python爬虫之Scrapy框架的架构原理和基本命令

Scrapy框架

Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的, 并且比较适合异步的代码, 对于会阻塞线程的操作包含访问文件, 数据库或者Web, 产生新的进程并需要处理新进程的输出(如运行shell命令), 执行系统层次操作的代码(冗余等待系统队列), Twisted提供了允许执行上面的操作但不会阻塞代码执行的方法.

Scrapy流程图 :

  

  Scrapy数据流是由执行的核心引擎(engine)控制, 流程如下 :

    1. 爬虫引擎engine获得初始请求开始抓取.

    2. 爬虫引擎engine开始请求调度程序scheduler, 并准备对下一次的请求进行抓取.

    3. 爬虫调度器返回下一个请求给爬虫引擎.

    4. 引擎请求发送端奥下载器downliader, 并准备对下一次的请求进行抓取.

    5. 一旦下载器完成页面下载, 将下载结果返回给爬虫引擎engine.

    6. 爬虫引擎engine将下载器downloader的响应通过中间件middlewares返回给爬虫spiders进行处理.

    7. 爬虫spiders处理响应, 并通过中间件middlewares返回处理后的items, 以及新的请求给引擎.

    8. 引擎发送处理后的items到项目管道, 然后把处理结果返回给调度器scheduler, 调度器计划处理下一个请求抓取.

    9. 重复该过程(继续步骤1), 知道将所有url爬取完毕.

组件功能 :

  爬虫引擎(engine)

    爬虫引擎负责控制各个组件之间的数据流, 当某些操作触发事件后都是通过engine来处理.

  调度器(scheduler)

    调度器收来engine的请求并将请求放入队列中, 并通过事件返回给engine.

  下载器(downloader)

    通过engine请求下载网络数据并将结果响应给engine.

  Spider

    Spider发出请求, 并处理engine返回给它下载器响应回来的数据, 以items和规则内的数据请求(urls)返回给engine

  管道项目(items pipeline)

    负责处理engine返回spider解析后的数据, 并且将数据持久化吗例如将数据存入数据库后者文件.

  下载中间件

    下载中间件是engine和下载器交互组件, 以钩子(插件)的形式存在, 可以带替接收请求, 处理数据的下载以及将结果响应给engine

  spider中间件

    spider中间件是engine和spider之间的交互组件, 以钩子的形式存在, 可以代替处理response以及返回给engine items及新的请求集.


 Scrapy框架的基本命令

创建Scrapy项目

  创建scrapy项目的命令是scrapy startproject ''项目名'', 创建一个爬虫项目,

  进入到项目目录scrapy genspider ''爬虫名字'' ''爬虫的域名''

xxxdeMBP:python_project xxx$ scrapy startproject test1
New Scrapy project 'test1', using template directory '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/scrapy/templates/project', created in:
    /Users/xxx/Documents/python_project/test1

You can start your first spider with:
    cd test1
    scrapy genspider example example.com
xxxdeMBP:python_project zhaofan$ 
xxxdeMBP:test1 xxx$ scrapy genspider shSpider hshfy.sh.cn
Created spider 'shSpider' using template 'basic' in module:
  test1.spiders.shSpider

scrapy项目结构 :

  

  items.py 负责数据模型的建立, 类似于实体类

  middleares.py 自己定义的中间件

  pipelines.py 负责对spider返回数据的处理

  settings.py 负责对整个爬虫的配置

  spiders目录 负责存放继承自scrapy的爬虫类

  scrapy.cfg scrapy基础配置

 关于命令的详细使用 :

  命令的使用范围 :

    使用命令分为全局命令和项目命令, 全局的命令表示可以在任何地方使用, 而项目的命令只能在项目目录下使用

    全局命令 :

      startproject : 创建爬虫项目

      genspider : 用于生成爬虫

      settings : 获取当前的配置信息(scrapy settings -h获取此命令的所有帮助信息)

      runspider : 启动爬虫程序(和crawl启动不同, 通过scrapy runspider 爬虫文件名 启动)

      shell : 是一个命令行交互模式(scrapy shell url地址进入交互模式)

      fetch : 该命令会通过scrapy downloader将网页源码下载下来显示(scrapy fetch url地址)

      view : 该命令会将网页document内容下载下来, 并且在浏览器显示(scrapy view url地址)

      version : 查看版本信息, 并查看依赖库的信息

    项目命令 :

      crawl : 启动爬虫程序(scrapy crawl 爬虫名字)

      check : 用于检查代码是否有错误(scrapy check)

      list : scrapy list列出可用的爬虫

      edit

      parse

      bench

  

猜你喜欢

转载自www.cnblogs.com/dong-/p/10304994.html
今日推荐