Scrapy 1.4 文档 01 初窥 Scrapy

初窥 Scrapy

Scrapy 是用于抓取网站并提取结构化数据的应用程序框架,其应用非常广泛,如数据挖掘,信息处理或历史存档。

尽管 Scrapy 最初设计用于网络数据采集(web scraping),但它也可用于使用 API(如 Amazon Associates Web Services)提取数据或用作通用的网络爬虫。

爬虫(spider)示例

为了向您展示 Scrapy 带给您的是什么,我们将使用最简单的方式运行一个爬虫,向您展示一个 Scrape Spider 的例子。

这是一个爬虫的代码,用于从网站 http://quotes.toscrape.com 中抓取名人名言(famous quotes):

import scrapyclass QuotesSpider(scrapy.Spider):name = "quotes"start_urls = ['http://quotes.toscrape.com/tag/humor/',]def parse(self, response):for quote in response.css('div.quote'):yield {'text': quote.css('span.text::text').extract_first(),'author': quote.xpath('span/small/text()').extract_first(),}next_page = response.css('li.next a::attr("href")').extract_first()if next_page is not None:yield response.follow(next_page, self.parse)

将其放在一个文本文件中,并将其命名为 quotes_spider.py,使用 runspider 命令启动爬虫:

scrapy runspider quotes_spider.py -o quotes.json

运行完成后,您将在 quotes.json 文件中看到 JSON 格式化的名人名言列表,包括文本和作者,如下所示(为了获得更好的可读性,在这里重新排版了一下):

[{"author": "Jane Austen","text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.\u201d"
},
{"author": "Groucho Marx","text": "\u201cOutside of a dog, a book is man's best friend. Inside of a dog it's too dark to read.\u201d"
},
{"author": "Steve Martin","text": "\u201cA day without sunshine is like, you know, night.\u201d"
},
...]

刚刚发生了什么?

当您运行命令 scrapy runspider quotes_spider.py 时,Scrapy 查找其中的 Spider 定义,并通过抓取引擎运行它。

通过对 start_urls 属性中定义的 URL(在里,只有一个URL,为标签(tag)为幽默(humor)的名言)发起请求(making requests)启动爬虫,并调用默认的回调方法 parse,参数为响应对象(response)。在 parse 回调方法中,我们使用 CSS 选择器循环遍历名言(quote)所在的元素,产生(yield)一个包含名人名言的 Python 字典,然后查找下一页的链接,并使用同样的回调方法 parse 发起另一个请求。

在这里,您或许注意到了 Scrapy 的主要优点之一:请求和处理是异步的。 这意味着 Scrapy 不需要等待一个请求返回的结果被处理完毕,就可以在此期间发起另一个请求或执行其他操作。 这也意味着即使某些请求失败了或在处理它时发生错误,其他请求仍然可以继续进行。

虽然这样可以使您进行非常快速的抓取(以容错方式同时发起多个请求),Scrapy 也可以让您通过一些设置来控制爬网的速度。 您可以在每个请求之间设置下载延迟,限制每个域或每个 IP 的并发请求数量,甚至使用自动调节扩展来自动计算这些延迟。

注意

这里使用了 feed exports 来生成 JSON 文件,您可以轻松地更改导出格式(例如,XML 或 CSV)和存储后台(例如,FTP 或 Amazon S3)。您还可以编写一个项目管道(item pipeline)以将项目存储在数据库中。

还有什么?

您已经看到如何使用 Scrapy 从网站中提取和存储数据,但这只是表面的。Scrapy 提供了许多强大的功能使爬取更容易高效,如:

  • 内置支持使用扩展的 CSS 选择器和 XPath 表达式从 HTML/XML 源代码中选择和提取数据,支持正则表达式。
  • 交互式 shell 控制台(IPython aware)用于尝试 CSS 和 XPath 表达式来抓取数据,在编写或调试您的爬虫时非常有用。
  • 内置支持以多种格式(JSON,CSV,XML)生成 feed exports,并将其存储在多种后端(FTP,S3,本地文件系统)
  • 强大的编码支持和自动检测功能,用于处理多种语言的,非标准的和错误的编码声明。
  • 强大的可扩展性,允许您使用信号(signals)和良好定义的API(中间件,扩展和管道)插入自己的功能。
  • 广泛的内置扩展和中间件处理:
    • Cookie 和会话处理
    • HTTP 功能,如压缩,身份验证,缓存
    • 用户代理欺骗
    • robots.txt
    • 爬取深度限制
    • 和更多
  • 一个 Telnet 控制台,用于挂接到 Scrapy 所在的的 Python 控制台,以便检查并调试您的爬虫
  • 还有其他好处诸如:可复用的从网站地图和 XML/CSV 文件中抓取网站的爬虫,自动下载与被抓取项目相关的图像(或任何其他多媒体)的媒体管道,可缓存的DNS解析器等等!

下一步是什么?

接下来的步骤是安装 Scrapy,根据教程创建一个完整的 Scrapy 项目并加入社区。 感谢您的关注!

转载于:https://www.cnblogs.com/-E6-/p/7211025.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机快速入门指南】4: 软件 I2C

目录硬知识I2C 介绍I2C 物理层I2C 协议层数据有效性规定起始和停止信号应答响应总线的寻址方式数据传输示例程序Soft_I2C.cSoft_I2C.h普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《普中 51 单片机开发攻略》 I2…

C# TextBox 换行 滚动到最后一行

1、要让一个Windows Form的TextBox显示多行文本就得把它的Multiline属性设置为true。 这个大家都知道,可是当你要在代码中为Text属性设置多行文本的时候可能会遇到点麻烦:)你往往会想到直接付给一个含有换行符"\n"的字符串给Text属…

this的用法this.name=name 这个什么意思

public Employee(string name, string alias){ // Use this to qualify the fields, name and alias: this.name name; this.alias alias;}this的用法this.namename 这个什么意思啊 具体点我有点狠难理解 这是个构造函数,this.name指当前类的属性&#x…

【51单片机快速入门指南】4.1: I2C 与 AT24C02 (EEPROM) 的跨页连续读写

目录硬知识AT24Cxx 介绍引脚排列引脚说明存储结构器件寻址器件操作待机模式存储复位写操作字节写页写应答查询读操作当前地址读随机读顺序读示例程序24C02.c24C02.h测试程序main.c实验现象通讯波形写入部分读取部分普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof…

nyist oj 37 回文字符串 (动态规划经典)

回文字符串 时间限制:3000 ms | 内存限制:65535 KB难度:4描写叙述所谓回文字符串,就是一个字符串。从左到右读和从右到左读是全然一样的。比方"aba"。当然,我们给你的问题不会再简单到推断一个字符串是不是…

iOS Application Security

文章分A,B,C,D 4个部分。 A) iOS Application Security 下面介绍iOS应用安全,如何分析和动态修改app。 1)iOS Application security Part 1 – Setting up a mobile pentesting platform Part1介绍如何在越狱的设备上搭建用来测试iOS安全的环境。 2&…

openlayers基础系列教程(一)

openlayers基础系列教程(一) http://www.openlayers.cn/portal.php?modview&aid19

【51单片机快速入门指南】4.2: SSD1306 OLED屏(0.96寸、1.3寸)的I2C控制详解

目录硬知识SSD1306简介I2C 接口从机地址位(SA0)I2C 总线写数据命令解码器晶振电路和显示时间发生器复位图形显示数据RAM (GDDRAM)命令表基本命令表部分指令详解为 BANK0 设置对比度控制(81h)全部显示开启(A4h/A5h&…

使用GNS3和Cisco IOU搭建路由交换实验-安装篇

如何使用GNS3和Cisco IOU搭建路由交换实验-安装篇GNS3软件的安装建议大家从官网直接下载最新版本的GNS3,官网连接http://www.gns3.com/根据系统类型选择相应的版本,这里我选择的是Windwos系统的最新版本1.3.2下载好安装包后直接运行安装包,在…

符号代码写法大全

摘自:http://www.w3schools.com/tags/ref_symbols.asp Math Symbols Supported by HTML CharacterEntity NumberEntity NameDescription∀∀for all∂∂part∃∃exists∅∅empty∇∇nabla∈∈isin∉&noti…

解决问题E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录,

在用sudo apt-get install kmymoney2安装软件kmymoney2时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示 :“E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资…

1787: [Ahoi2008]Meet 紧急集合

1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1482 Solved: 652[Submit][Status][Discuss]Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 Sample Output 5 2 2 5 4 1 6 0 HINT Sou…

一步一步学Vue(四)

接上篇。上篇中给出了代码框架,没有具体实现,这一篇会对上篇定义的几个组件进行分别介绍和完善: 1、TodoContainer组件 TodoContainer组件,用来组织其它组件,这是react中推荐的方式,也是redux中高阶组件一般…

【51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据

目录硬知识特性参数MPU6050 简介模块重要寄存器简介电源管理寄存器 1陀螺仪配置寄存器加速度传感器配置寄存器FIFO 使能寄存器陀螺仪采样率分频寄存器配置寄存器电源管理寄存器 2陀螺仪数据输出寄存器加速度传感器数据输出寄存器温度传感器示例程序MPU6050.cMPU6050.hmain.c实验…

OSM数据的获取及格式转换

转自 :http://blog.sina.com.cn/s/blog_72f0b6080102w39z.html 前言:本篇博文将介绍如何对OSM数据进行获取,以及格式的转换(转为shapefile格式)。以供OSM数据获取失败、OSM editor操作失败的朋友参考。由于并不是多么高…

再读TCP/IP网络7层协议

随着工作的深入,每次读这7层协议,每次都有不同的理解。 分层名 分层号 描述 比喻 应用层Application La…

LVS之一:基本命令和调度方法

实验环境:fedora_server最新版本1.查看内核是否支持ipvsgrep -i vs /boot/config-3.17.4-301.fc21.i686PAE2.安装ipvsadmyum install ipvsadm3.ipvsadm命令1、管理集群服务1.添加:-Aipvsadm -A|E -t|u|f service-address-t:tcp协议集群 -u&am…

windows下安装mysql教程

下载mysql压缩包 我的系统是windows10,64位的,我下载了最新版的MySQL Community Server。这是社区版的mysql服务器。自己根据自己系统酌情下载。 解压和检查包内容 用你喜欢的软件将你下载来的压缩包解压,解压位置随意,因为可以配…

oracle复习笔记

2019独角兽企业重金招聘Python工程师标准>>> 1.oracle相关认证:OCA:Oracle认证专员,OCP:Oracle专家认证,OCM:Oracle认证大师。 2.1979年,Oracle2发布。 3.Oracle数据库特点:支持多用户,大事务量的事务处理&…