在爬取一个网站时,想要爬取的数据通常分布到多个页面中,每个页面包含一部分数据以及其他页面的链接,提取链接有使用 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. 传奇身上装备升级系列脚本,以及UPGRADEITEMEX 脚本的详细参数解释

    UPGRADEITEMEX 脚本的详细参数解释如下: UPGRADEITEMEX 物品位置(0-12) 属性位置(0-14) 成功机率(0-100) 点数机率(0-255) 是否破碎(0,1) 物品位 ...

  2. python3+requests+BeautifulSoup+mysql爬取豆瓣电影top250

    基础页面:https://movie.douban.com/top250 代码: from time import sleep from requests import get from bs4 im ...

  3. mysql-8.0.18-winx64 环境变量的配置

    1. 鼠标右击   此电脑    -->属性 如图:进行步骤 1->2->3 接下来就可以使用命令mysql  -u  root  -p登录mysql了 启动mysql的命令为net ...

  4. Centos610 Oracle 监听文件配置参考

    lister.ora配置参考 # listener.ora Network Configuration File: /home/oracle/app/oracle/product//dbhome_1/ ...

  5. 校准产品质量,把控出海航向,腾讯WeTest《2019中国移动游戏质量白皮书》正式开放预约

    作者:wetest小编 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:https://wetest.qq.com/lab/view/483.html 每当步入一个新的年份, ...

  6. 【代码总结】PHP面向对象之接口与多态性应用

    概述: PHP之支持单继承,也就是说每个类智能继承一个父类.当声明的新类继承抽象类实现模板以后就不能再有其他问题,为了解决这个问题,PHP引用了接口 ------------------------- ...

  7. 无数据库模式kong/kong-ingress-controller

    apiVersion: v1kind: Namespacemetadata:  name: kong---apiVersion: apiextensions.k8s.io/v1beta1kind: C ...

  8. CSS水平垂直居中常见方法总结

    1.元素水平居中 当然最好使的是: margin: 0 auto; 居中不好使的原因: 1.元素没有设置宽度,没有宽度怎么居中嘛! 2.设置了宽度依然不好使,你设置的是行内元素吧,行内元素和块元素的区 ...

  9. 【原】Django总结

    centos7下部署django详细步骤:https://www.cnblogs.com/djangocn/p/9538551.html 快速入门:https://www.cnblogs.com/ze ...

  10. 获取Linux系统运行情况信息

    代码: #include <stdio.h> #include <unistd.h> /* usleep() */ #include <stdlib.h> #inc ...