文章目录

  • Scrapy at a glance(一目了然)
  • Walk-through of an example spider(一个小例子)
  • What just happened?(刚刚发生了什么?)
  • What else?(还有什么?)
  • What’s next?(接下来是什么?)

Scrapy at a glance(一目了然)

Scrapy是一个用于对web站点进行抓取和提取结构化数据的应用框架,可用于数据挖掘、信息处理或历史档案等多种有用的应用。
尽管Scrapy最初是为web抓取(web scraping)而设计的,但它也可以使用api(如亚马逊Web服务(Amazon Associates web Services))或作为通用web爬虫来提取数据。

Walk-through of an example spider(一个小例子)

为了向您展示Scrapy带来了什么,我们将使用最简单的运行爬虫的方法向您介绍Scrapy Spider的示例。

下面是一个爬虫的代码,它从http://quotes.toscrape.com网站上抓取著名的引言,并自动爬取下一页内容:

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').get(),'author': quote.xpath('span/small/text()').get(),}next_page = response.css('li.next a::attr("href")').get()if next_page is not None:yield response.follow(next_page, self.parse)

将其放入文本文件中,将其命名为qutes_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"
},
...]

What just happened?(刚刚发生了什么?)

当您运行scrapy runSpider quotes_spider.py命令时,Scrapy会在其中查找Spider定义,并通过其爬虫引擎运行它。

爬虫首先请求start_urls属性中定义的URL(在本例中,仅请求humor类别中的引言的URL),然后调用默认的回调方法parse,将Response对象作为参数传递。 在回调函数parse中,我们使用CSS选择器遍历引用元素(quote elements),生成包含提取的引言的文本和作者的Python字典,查找指向下一页的链接,并使用与回调函数相同的parse方法调度(解析)另一个请求。

在这里,您会注意到Scrapy的主要优势之一:请求是异步调度和处理的(scheduled and processed asynchronously)。 这意味着Scrapy无需等待请求完成和处理,它可以同时发送另一个请求或执行其他操作。 这也意味着即使某些请求失败或在处理过程中发生错误,其他请求也可以继续执行。

虽然这使您能够进行非常快速的爬取(以容错的方式同时发送多个并发请求),但是Scrapy还允许您可以通过一些设置(a few settings)来控制爬取的礼貌。 您可以执行以下操作,例如设置每个请求之间的下载延迟,限制每个域或每个IP的并发请求数量,甚至使用尝试自动找出这些请求的自动限制扩展( using an auto-throttling extension )。

注意:
这是使用提要导出(feed exports)来生成JSON文件,您可以轻松更改导出格式(例如XML或CSV)或存储后端(例如FTP或Amazon S3)。 您还可以编写项目管道(item pipeline)以将项目存储在数据库中。

What else?(还有什么?)

您已经了解了如何使用Scrapy从网站提取和存储项目,但这仅仅是表面上的。 Scrrapy提供了许多功能强大的功能,可让您轻松高效地进行抓取,例如:

  • 内置支持使用扩展的CSS选择器和XPath表达式从HTML/XML源中选择和提取( selecting and extracting)数据,以及使用正则表达式提取的助手方法。
  • 一个交互式的Shell控制台(interactive shell console)(支持IPython),用于尝试CSS和XPath表达式以获取(爬取)数据,在编写或调试Spider(爬虫)时非常有用。
  • 内置支持以多种格式(JSON、CSV、XML)生成feed导出( generating feed exports)并将其存储在多个后端(FTP、S3、本地文件系统)
  • 强大的编码支持和自动检测功能,用于处理外来的,非标准的和损坏的编码声明。
  • 强大的可扩展性支持(Strong extensibility support),使您可以使用信号(signals)和定义明确的API(中间件,扩展(extensions)和管道( pipelines))插入自己的功能。
  • 广泛的内置扩展和中间件,用于处理:
    • Cookie(cookies)和会话(session)处理
    • HTTP特性,如压缩、身份验证、缓存
    • 用户代理伪装
    • robots.txt(网站爬虫许可内容)
    • 爬虫爬取深度限制
    • 等等
  • 一个Telnet控制台(Telnet Console),用于连接到运行在Scrapy进程中的Python控制台,以便对爬虫程序进行内省和调试
  • 再加上其他一些优点,如可重用的爬虫,从站点地图(Sitemaps)和XML/CSV源抓取站点,一个自动下载图片( automatically downloading images)(或任何其他媒体)的媒体管道,一个缓存DNS解析器,等等!

What’s next?(接下来是什么?)

接下来的步骤是安装Scrapy(install Scrapy),按照教程学习( follow through the tutorial)如何创建一个完整的Scrapy项目并加入社区(join the community)。谢谢您的关注!

第一步1:一目了然(了解)相关推荐

  1. TFN光时域反射仪,维修、安装网络的第一步!

    网络是现代人生活中不可或缺的一个重要工具,大家都知道接网线,但是几乎只有专业人士才知道光缆才是网线的第一步,而当光缆出了问题,我们通常会用到OTDR. OTDR具有广泛的用途,主要用来测量光纤长度.光 ...

  2. 做好OKR目标管理,迈出高效协作的第一步

    协作中很重要一步就是做好目标管理.只有全公司上下和各部门目标协调统一,人人目标明确,大家才能力往一处使,共同努力实现企业的目标.而有效的目标管理,除了要求管理者对企业发展方向和战略进行深入思考外,有效 ...

  3. 打破数字化盐碱地:传统型企业如何踏稳数字化转型第一步

    导语:在汽车到来前的时代,人们追求更快的马车,殊不知要的是一辆汽车,而在数字化已然降临的当代,部分企业寄希望于更新管理理念.组织结构等实现效益的不断攀升,殊不知需要的是一次内外部结合的数字要素升级与重 ...

  4. 当你敲完Hello World后的第一步——C

    "江山如画,一时多少豪杰--时二二年五月六日" 这里是目录 前言 一.#define指令 1.#define定义宏 2.#define 替换 宏 3.带副作用的宏参数 4.#und ...

  5. 使用d2rq的第一步

    知识图谱项目 经过前期的基本理论研究,目前着手研究具体的构建过程.在知识抽取和形成RDF进行本题库管理方面,考虑可能会用到neo4j和d2rq,首先分别研究了其安装和初步应用的步骤. 一.d2rq简介 ...

  6. 使用myeclipse的第一步

    使用myeclipse的第一步 将以下代码copy放在一个包中运行,然后在控制台输入任意字符,回车,然后控制台打印一串密匙,这里你输入的就是账号,控制台返回的就是注册码,点击MyEclipse-> ...

  7. python安装包_迈出Python学习第一步:Python开发环境的下载与安装

    所谓"磨刀不误砍柴工"."工欲善其事,必先利其器",都在告诉我们一个道理:要做好一个事情,事先做好充分的准备工作是非常重要的.所以在我们正式学习用Python编 ...

  8. ecshop入门第一步,替换ecshop模板的显示图片

    所有的都是模范默认模板来制作,所以应该参考默认模板的一些数据设置 1.找到themes\default\images文件夹下 screenshot.png 图片 默认如下: 在你的模板文件夹下新建一个 ...

  9. python采集第一步

    2019独角兽企业重金招聘Python工程师标准>>> 上次说要做一个http://www.m4493.com/的美女站点,需要使用python进行数据采集 接下来我们就开始采集数据 ...

  10. 初学架构设计的第一步:需求、愿景与架构

    初学架构设计的第一步:需求.愿景与架构 了解<需求>.<愿景>与<架构>三者的关系.也就是<需求分析>.<观想愿景>与<架构设计> ...

最新文章

  1. win10 无法安装/启用 .net framework 3.5 的一种解决方案
  2. HTML5 Web app开发工具Kendo UI Web中Grid网格控件的使用
  3. VTK:相交线用法实战
  4. vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式
  5. 浅谈Solr和ElasticSearch建索引性能优化策略
  6. c语言常用单词表格,C语言常用单词
  7. linux 链表头文件,Linux下单链表的实现
  8. ThinkPHP 3.1.2 模板中的变量
  9. 【2019】【论文笔记】基于混合石墨烯金属结构的可重构THz Vivaldi天线——
  10. 为什么书上说是 TCP 四次挥手,但是实际会出现 TCP 三次挥手?
  11. 温度传感器的一些比较
  12. Java规则引擎easy rules
  13. 关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
  14. SCIPY类库——最小二乘法应用
  15. 家乐福计算机管理与控制系统,家乐福的订货部门是整个家乐福物流系统的核心,控制整个企业的物流运转。在家乐福..._考试资料网...
  16. 教案设计计算机,认识计算机教案设计
  17. 思科计算机网络第七章7.4.1.2,计算机网络安全技术与实施(旧) 思科网络学院CCNA Security资源 CCNA安全第7章实验1_Explor-Encrypt_教师实验手册.doc...
  18. 服务器安全与网络安全监测
  19. 什么是 MVVM ?
  20. vue.js BMap 与BMapLib.lushu 的配置与百度路书,结合项目后台的实例展示

热门文章

  1. 关于PHP编程语言的事实
  2. SIMULINK电力电子仿真
  3. C语言中有符号与无符号
  4. 不规则长方体空间移动工程师_创想,深度培养学生的空间观念 ——长、正方体的展开图教学实录与评析...
  5. 香港影坛老牌奸角石坚病逝 享年96岁
  6. 有关opencv的学习(17)—形态学滤波器检测边缘和角点
  7. VidMobie Blu-ray Ripper for Mac(蓝光DVD转换器)
  8. Android项目依赖冲突的一个解决办法
  9. Azkaban使用教程
  10. ICON的设计很重要