zoukankan      html  css  js  c++  java
  • Scrapy 使用 LinkExtractor 提取链接和使用 Exporter 导出数据

      在爬取一个网站时,想要爬取的数据通常分布到多个页面中,每个页面包含一部分数据以及其他页面的链接,提取链接有使用 Selector 和使用 Linkextractor 两种方法。

    1、使用Selector

      因为链接也是页面中的数据,所以可以使用与提取数据相同的方法进行提取,在提取少量或(几个)链接或提取规则比较简单时,使用 Selector 就足够了。

    2、使用 LinkExtractor

      Scrapy 提供了一个专门用于提取链接的类 LinkExtractor,在提取大量链接或提取规则比较复杂时,使用 LinkExtractor更加方便。

    3、使用 Exporter 导出数据

      大家掌握了爬取带数据、封装数据、处理数据的相关技术。接下来我们来学习如何将爬取到的数据以某种数据格式保存起来,即导出数据。

      在 Scrapy 中,负责导出数据的组件被称为Exporter(导出器),Scrapy 内部实现了多个 Exportter,每个 Exporter 实现一种数据格式的导出

      支持的数据格式如下(括号中为相应的Exporter):

        (1)JSON(JsonItemExporter)

        (2)JSON(JsonItemExporter)

        (3)CSV(CsvItemExporter)

        (4)XML(XmlItemExporter)

        (5)Pickle(PickleItemExporter)

        (6)Marshal(MarshalItemExporter)

      其中,前 4 种是极为常用的文本数据格式,而后两种是 Python 特有的。在大多数情况下,使用 Scrapy 颞部提供的Exporter 就足够了

      需要以其他数据格式(上述 6 中之外)导出数据时,可以自行实现 Exporter。

    4、指定如何导出数据

      在导出数据时,需向 Scrapy 爬虫提供一下信息:

      (1)导出文件路径

      (2)导出数据格式(即选择哪种 Exporter)

      可以通过以下两种方式指定爬虫如何导出数据:

      (1)通过命令行参数指定

      (2)通过配置文件指定

      1、命令行参数

        在运行 scrapy crawl 命令时,可以分为 -o 和 -t 参数指定导出的文件路径以及导出数据格式

    scrapy crawl books -o books.csv

      其中, -o books.csv 指定了导出文件的路径,在这里虽然没有使用 -t 参数指定导出数据的格式,但 Scrapy 爬虫通过文件后缀名推断出我想以 csv 作为导出数据的格式,同样的道理,如果过将参数改为 -o books.json, Scrapy 爬虫就会以 json 作为导出数据格式。

      需要明确的指定导出数据格式,使用 -t 参数,例如:

     

    scrapy crawl books -t csv -o books1.data
    scrapy crawl books -t json -o books1.data
    scrapy crawl books -t xml -o books1.data

    运行以上命令,Scrapy 爬虫会以 -t 参数中的数据格式字符串(如 csv、json、xml)为键,在配置字典 FEED_EXPORTERS 中搜索 Exporter,FEED_EXPORTERS 的内容由一下两个字典的内容合并而成:

      (1)默认配置文件中 FEED_EXPORTER_BASE

      (2)用户配置文件中的 FEED_EXPORTERS

      前者包含内部支持的导出数据格式,后者包含用户自定义的翻出数据格式

      

  • 相关阅读:
    python取一个字符串中最多出现次数的词
    python openpyxl 操作 excel
    微信公众平台开发
    Oracle
    微信公众平台开发
    微信公众平台开发
    Html 转义字符那些事儿
    Linq DataTable表连接
    使用WeUI+JS 的label包含input触发两次的问题
    Html 图片上传
  • 原文地址:https://www.cnblogs.com/jcjc/p/10910229.html
Copyright © 2011-2022 走看看