zoukankan      html  css  js  c++  java
  • Scrapy

    Scrapy的运行流程如下,整体在Scrapy Engine的调度下,首先运行的是Scheduler(调度器),Scheduler从(下载队列)url队列中取出一个URL,将这个url交给Downloader,Downloader下载这个URL对应的Web资源,然后将下载的原始数据交给Spiders,Spiders会从原始数据中提取出有用的信息,最后将提取出的数据交给Item Pipeline,这是一个数据管道,可以通过Item Pipeline将数据保存到数据库、文本文件或其他存储介质上。
    从上面的话中,我们得知
    Scrapy主要包括6个部分
    1.Scrapy Engine(Scrapy 引擎):用来处理整个系统的数据流,触发各种事件
    2.Scheduler(调度器):从url队列中取出一个URL
    3.Downloader(下载器):下载这个URL对应的Web资源
    4.Spiders(网络爬虫):接收下载器下载的原始数据,做进一步的处理,例如:使用XPath提取感兴趣的信息
    5.Item Pipeline(项目管道):接收网络爬虫传过来的数据,以便做进一步处理。例如,存入数据库,存入文本文件
    6.中间件:整个Scrapy框架有很多中间件,如下载中间件、网络爬虫中间件等,这些中间件相当于过滤器,夹在不同部分之间截获数据流,并进行特殊的加功处理。

    Scrapy提供一个Shell,相当于Python的REPL环境,可以用这个Scrapy Shell测试Scrapy代码。
    执行方式很简单
    打开终端,输入Scrapy shell命令,就会进入Scrapy shell。
    今天学到了Spiders(网络爬虫)目录下编写的爬虫,和不在该框架下编写有个很大的区别就是他是有固定格式的


    简单来说就是他是定义个类(继承scrapy.Spider类),这个类一定要有命名name = '某某',更具这个命名来执行该爬虫,执行语句是scrapy crawl 命名,命名之后有个url_list=[],这里面是存放url的,接着是编写解析函数(2个参数,self和response),response.xpath直接编写xpath语句,不用考虑解析的页面是从哪来,挺方便的。
    执行语句文件的话还可以编写个.py文件,这样方便执行(但我觉得有时候终端输入执行命令挺好),
    执行语句cmdline.execute应该是打印输出在终端

    from scrapy import cmdline
    # 通过代码运行基于Scrapy框架的网络爬虫
    cmdline.execute('scrapy crawl FirstSpider'.split()) #还可以使用对字符串处理的函数
    # 当然也可以执行保存文件;-o之后就是文件名也是用括号括起来的
    cmdline.execute('scrapy crawl ItemLoaderSpider1 -o items-3.json'.split())
    

    items.py也就是项目管道,存储数据的地方,这个也是定义个类,该类必须继承scrapy.Item。
    每个类就是一个存储数据的地方,采用变量的方式可以更方便的引用他们到spireds文件夹中的爬虫文件中
    一般都是scrapy.Field(),代表是文件

    import scrapy
    class MyscrapyItem(scrapy.Item):
        # 每一个要保存的属性都必须是Field类的实例
        title = scrapy.Field()
        href = scrapy.Field()
        abstract = scrapy.Field()
    

    保存文件的话需要使用ItemLoader类(ItemLoader类的构造要有2个参数,1个是item,一个是Response)

    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    微信小程序 获取手机号 获取基础信息 自定义分享 获取dom节点
    微信公众号 生成带参数进入公众号关注页的二维码 监听用户关注公众号事件 自定义菜单栏 (服务端)
    js 防抖和节流 (学习笔记)
    vue 封装axios api模块化 并使用方式 MD5 数据加密
    1.1 Logistics Regression模型
    音视频入门-19-使用giflib处理GIF图片
    思维
    面试题库
    前端代码规范
    D3JS笔记
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15314335.html
Copyright © 2011-2022 走看看