美文网首页
冰解的破-Scrapy

冰解的破-Scrapy

作者: 大佛爱读书 | 来源:发表于2018-07-04 23:18 被阅读0次
scrapy
Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

Scrap,是碎片的意思,这个Python的爬虫框架叫Scrapy。

学习整理:

  • scrapy架构?

先科普下什么是爬虫,爬虫的本质就是将互联网网页(数据)下载下来的程序。


爬虫

通过对互联网无数个url数据的下载,url之间可能又有关联,于是形成了犹如蜘蛛网状的结构,而爬虫就守在这张大网之上,因此我们通常又将爬虫成为蜘蛛。


spider

爬虫的基本结构:


基本爬虫架构
由上图可以看出爬虫一般由爬虫调度器、URL管理器、网页下载器、网页解析器、数据存储这几个模块组成。
  • 爬虫调度器主要是对url管理器、网页下载器网页解析器进行管理。
  • URL管理器主要通过初始url及网页解析器获得的url进行存储管理,并为调度器提供接口,为网页下载器提供下载入口。
  • 网页下载器主要功能就是下载该url下的网页数据(源码)
  • 网页解析器一方面解析出我们需要的价值数据,一方面又将网页下载器下载数据中的url存储到url管理器中。
  • 数据存储是将网页解析器的解析的价值数据存储到内存、数据库、文件等。

scrapy data flow(流程图)


scrapy流程

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

  1. 爬虫引擎获得初始请求开始抓取。
  2. 爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。
  3. 爬虫调度器返回下一个请求给爬虫引擎。
  4. 引擎请求发送到下载器,通过下载中间件下载网络数据。
  5. 一旦下载器完成页面下载,将下载结果返回给爬虫引擎。
  6. 引擎将下载器的响应通过中间件返回给爬虫进行处理。
  7. 爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎。
  8. 引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取。
  9. 重复该过程(继续步骤1),直到爬取完所有的url请求。

单独介绍下scrapy各个组件:

  • 爬虫引擎(ENGINE)
    爬虫引擎负责控制各个组件之间的数据流,当某些操作触发事件后都是通过engine来处理。
  • 调度器
    调度接收来engine的请求并将请求放入队列中,并通过事件返回给engine。
  • 下载器
    通过engine请求下载网络数据并将结果响应给engine。
  • Spider
    Spider发出请求,并处理engine返回给它下载器响应数据,以items和规则内的数据请求(urls)返回给engine。
  • 管道项目(item pipeline)
    负责处理engine返回spider解析后的数据,并且将数据持久化,例如将数据存入数据库或者文件。
  • 下载中间件
    下载中间件是engine和下载器交互组件,以钩子(插件)的形式存在,可以代替接收请求、处理数据的下载以及将结果响应给engine。
  • spider中间件
    spider中间件是engine和spider之间的交互组件,以钩子(插件)的形式存在,可以代替处理response以及返回给engine items及新的请求集。

scrapy项目结构:


项目结构

参见:
Scrapy爬虫(二):爬虫简介:https://blog.csdn.net/yancey_blog/article/details/53887924
Scrapy爬虫(三):scrapy架构及原理:https://blog.csdn.net/yancey_blog/article/details/53888473

TO BE CONTINUED ......

相关文章

  • 冰解的破-Scrapy

    Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如Base...

  • 冰解的破-Hbase

    学习整理: hbase运行原理,rowkey的作用? HBase 是一个高可靠、高性能、面向列、可伸缩的分布式存储...

  • 冰解的破-Redis

    Redis 是一个 Key-Value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对...

  • 冰解的破-HDFS

    HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系...

  • 冰解的破-kerberos

    学习整理: 理解kerberos在spark/hadoop体系下的应用: 说道安全,可能是整个大数据体系中最晦涩难...

  • 冰解的破-spark

    Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AM...

  • 冰解的破-Flume

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在...

  • 冰解的破-Linux

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程...

  • 冰解的破-hive

    Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL)...

  • 冰解的破-ZooKeeper

    学习整理: zookeeper有哪些应用,HA热备、分布式锁、集中配置用到了zookeeper的什么? ZooKe...

网友评论

      本文标题:冰解的破-Scrapy

      本文链接:https://www.haomeiwen.com/subject/difyuftx.html