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,进行网络爬虫的尝试了

  • 相关阅读:
    延迟加载时发生no session错误的解决办法
    零零散散的一些知识点(一)
    零零散散的一些知识点(二)
    自己写的一个日历表
    js复制网址
    load方法在延迟加载时可能出现的错误。
    JSON基本介绍
    JBOSS4.0 JDBC数据源配置大全
    EJB学习笔记一
    Android程序完全退出的方法
  • 原文地址:https://www.cnblogs.com/lz0504/p/9300622.html
Copyright © 2011-2022 走看看