在爬取一个网站时,想要爬取的数据通常分布到多个页面中,每个页面包含一部分数据以及其他页面的链接,提取链接有使用 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

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

  

Scrapy 使用 LinkExtractor 提取链接和使用 Exporter 导出数据的更多相关文章

  1. scrapy之使用LinkExtractor提取链接

    一.概述: 在页面含有少量链接时,使用selector来提取信息就可以,但如果链接特别多时,就需要用LinkExtractor来提取. 二.LinkExtractor构造器的各个参数: 1.allow ...

  2. scrapy中使用LinkExtractor提取链接

    le = LinkExtractor(restrict_css='ul.pager li.next') links = le.extract_links(response)   使用LinkExtra ...

  3. 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)(转)

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  4. 【python】使用HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies

    一.从HTML文档中提取链接 模块HTMLParser,该模块使我们能够根据HTML文档中的标签来简洁.高效地解析HTML文档. 处理HTML文档的时候,我们常常需要从其中提取出所有的链接.使用HTM ...

  5. asp之GetArray提取链接地址,以$Array$分隔的代码

    '================================================== '函数名:GetArray '作 用:提取链接地址,以$Array$分隔 '参 数:ConStr ...

  6. Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  7. Scrapy 通过登录的方式爬取豆瓣影评数据

    Scrapy 通过登录的方式爬取豆瓣影评数据 爬虫 Scrapy 豆瓣 Fly 由于需要爬取影评数据在来做分析,就选择了豆瓣影评来抓取数据,工具使用的是Scrapy工具来实现.scrapy工具使用起来 ...

  8. 【Lab】提取result的bits和Y-PSNR数据并整理到Excel

    [Lab]提取result的bits和Y-PSNR数据并整理到Excel 更新:使用openpyxl库直接将数据写入Excel中 注意:openpyxl是第三方库,如果没有安装.请命令行里键入pip ...

  9. jmeter如何使用正则表达式,如何提取token等想要的数据

    使用正则表达式,提取你想要的任何数据, 例如要提取响应结果里的token字段及sex字段(响应内容为: "token":"83EEAA887F1D2F1AA1CDA9E1 ...

随机推荐

  1. Kettle-User Defined Java Class使用-大写转换

    一.大写转换 (1)步骤(表输入-Java脚本-表输出) (2)配置 1)表输入 2)java脚本 public boolean processRow(StepMetaInterface smi, S ...

  2. 【转】Docker网络模式--默认模式bridge模式

    一 引言 当 Docker 启动时,会自动在主机上创建一个名为 docker0 虚拟网桥,这实际上就是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网口之间进行转发.系 ...

  3. python ui自动化之元素定位和常用操作

    做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 ...

  4. //C语言:将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制数返回。

    //函数fun:将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制数返回. #include <stdio.h> #pragma warning (disable:4996) ...

  5. Python分析盘点2019全球流行音乐:是哪些歌曲榜单占领了我们?

    写在前面:圣诞刚过,弥留者节日气息的大家是否还在继续学习呐~在匆忙之际也不忘给自己找几首好听的歌曲放松一下,缠绕着音乐一起来看看关于2019年流行音乐趋势是如何用Python分析的吧! 昨天下午没事儿 ...

  6. Node.js 服务端处理图片

    Node 服务端处理图片 服务端进行图片处理是很常见的需求,但是Node在这一块相对来说比较薄弱.找了几个比较常见的模块来解决问题. gm GraphicsMagick for node 使用Open ...

  7. laravel qq邮件配置

  8. Python os模块、os.path模块常用方法

    os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分. os.sep 可以取代操作系统特定的路径分隔符.windows下为 "\" o ...

  9. Linux 常用命令——查看系统

    有的时候别人给你一个登录方式,但是不知道是啥系统,看图就知道了 1.uname -a    查看电脑以及操作系统 2.cat /proc/version 正在运行的内核版本 3.cat /etc/is ...

  10. Spring Boot 2.0 新特性

    这是一篇总结文章,主要收集 Spring Boot 2.0 相对于 Spring Boot 1.x 的新特性,本章节并不提供实践性质的源代码.在 Spring Boot 系列文章中会持续退出实践章节. ...