在爬取一个网站时,想要爬取的数据通常分布到多个页面中,每个页面包含一部分数据以及其他页面的链接,提取链接有使用 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. MAC平台基于Python的Appium环境搭建

    前言 最近笔者要为python+appium课程做准备,mac在2019年重新安装了一次系统,这次重新在mac下搭建appium环境,刚好顺带写个文稿给大家分享分享搭建过程. 一.环境和所需软件概述 ...

  2. webservice笔记

    Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  3. Tensorflow机器学习入门——读取数据

    TensorFlow 中可以通过三种方式读取数据: 一.通过feed_dict传递数据: input1 = tf.placeholder(tf.float32) input2 = tf.placeho ...

  4. Ubuntu python3 与 python2 的 pip调用

    ubuntu 是默认装有pytthon2.x 与 python3.x 共存的 通常终端里 python 表示 python2 版本 python3 表示 python3 版本 (如果你没更改软链接设置 ...

  5. java编码格式大讲解

    oracle 分页: -- 第一种 select * from (select aed.*, row_number() over(order by aed.created_date) rw from ...

  6. WinForm开发(6)——C#/winform程序打包部署时,如何把SQL数据库一起打包进去

    打包数据库到安装程序中 方法1. 备份/恢复先备份数据库:backup database 数据库 to disk='c:\备份.bak' 将备份文件打包到安装程序中. 在第一次运行程序的时候,进行数据 ...

  7. Mybatis中mapper.xml的使用

    详解多对多,mybatis多对多查询(xml方式和注解方式) 链接:https://blog.csdn.net/qq_42524262/article/details/98383977 链接:http ...

  8. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(3)

    import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...

  9. 【原】简单shell练习(五)

    1.查询一个文件中某个单词出现的次数 # grep -o 'ts' ./test/txt |wc -l 2.统计当前文件夹下文件的个数 ls -l |grep "^-"|wc -l ...

  10. Mybatis遇到的报错

    MyBatis遇到的报错: 1.Caused by: org.xml.sax.SAXParseException; lineNumber: 35; columnNumber: 17; 元素类型为 &q ...