zoukankan      html  css  js  c++  java
  • Scrapy (网络爬虫框架)入门

    一.Scrapy 简介:

    Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

    二.Scrapy框架

    1.框架图

    绿色线是数据流向

    2.框架图讲解:

    功能讲解:

    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)

    3.代码执行顺序:

    ①SPIDERS的yeild将request发送给ENGIN
    ②ENGINE对request不做任何处理发送给SCHEDULER
    ③SCHEDULER( url调度器),生成request交给ENGIN
    ④ENGINE拿到request,通过MIDDLEWARE进行层层过滤发送给DOWNLOADER
    ⑤DOWNLOADER在网上获取到response数据之后,又经过MIDDLEWARE进行层层过滤发送给ENGIN
    ⑥ENGINE获取到response数据之后,返回给SPIDERS,SPIDERS的parse()方法对获取到的response数据进行处理,解析出items或者requests
    ⑦将解析出来的items或者requests发送给ENGIN
    ⑧ENGIN获取到items或者requests,将items发送给ITEM PIPELINES,将requests发送给SCHEDULER

    4.个人理解,代码执行过程:

    代码从爬虫文件,spider开始爬取 > 爬取的网络请求发送给引擎 > 引擎分给调度器 > 调度器将请求放入队列中 > 分给下载器去处理request并获取response > 下载器将response发送给引擎,引擎又分配给爬虫spider处理,(处理数据的是爬虫文件中的parse方法),处理之后的数据 > 交给管道pipelines去存储,在处理过程中 > 有新的请求,会再次执行上述过程

    三 . Scrapy框架下建立爬虫项目

    在linux系统平台下:

    在终端执行命令:

    1.创建项目:scrapy startproject  项目名称

    2.创建爬虫:首先进入刚刚创建的项目目录下

                     接着执行:scrapy genspider  爬虫名  爬取的域名

    3.执行怕爬虫:scrapy  crawl  爬虫名称

    下图为常见命令:

     

    四.配置pycharm 让Scrapy项目直接运行

    步骤:1.首先在item.py配置,爬取的目标字段

    格式:字段=scrapy.Field()

    2.编写爬虫文件

    3.编写pipelines管道文件

    4.在settings.py中设置下

    该字段右True改成False

    在setting中打开ITEN_PIPELINES

    5.在终端运行:执行爬虫文件的命令:scrapy  crawl  爬虫名称

    就可以爬取到需要的数据,并保存在pipelines中设置的文件中

    以上是scrapy的简单了解,接下来可以使用scrapy结合pycharm,进行网络爬虫的尝试了

  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/lz0504/p/9300622.html
Copyright © 2011-2022 走看看