zoukankan      html  css  js  c++  java
  • Learning Scrapy 中文版翻译 第一章

    第一章:scrapy介绍

    欢迎来到scrapy之旅。通过这本书,我们将帮助你从只会一点或者零基础的Scrapy初学者达到熟练使用这个强大的框架在互联网或者其他资源抓取海量的数据。在这一章节,我们将给你介绍Scrapy并且告诉你能用Scrapy做哪些不可思议的事情。

    你好 Scrapy:

    Scrapy是一个健壮的抓取网络数据的框架。 作为一个临时的互联网使用者,你会经常发现更愿意将网站上浏览的数据保存在像EXCEL的文件中(参考章节3,基础爬虫),便于在离线或者需要计算的时候使用。作为一个开发者,你更希望将不同网站获取的数据整合起来,但是你也清楚检索和提取这些数据的复杂性。Scrapy可以帮助你完成简单和复杂数据的提取

    Scrapy是基于多年健壮高效的提取海量数据的经验上开发的。通过Scrapy, 你只需要通过简单的配置就可以达到其他爬虫框架使用多个类,插件和配置才能达到的的效果。快速浏览章节7:配置和管理,你就能知道通过几行简单的配置就能在Scrapy中完成大量的工作。

    从一个开发者的角度,你将会了解Scrapy基于事件的架构(我们将在章节8:Scrapy编程和章节9:管道方法中深入介绍)。它能够让我们对清洗,形成,丰富数据,存储进数据库等等操作进行串联操作。同时还可以享受非常低的性能损耗,当然必须确保是正确的方式。在这本书中,你将会完全学到如何去做到这些。从技术角度来说,由于是基于事件的,在同时有几千个连接的时候,Scrapy能够让我们摆脱由于吞吐量带来的延迟。举一个极端的例子,想象下你准备从网站上提取列表,同时这个网站有大量的页面并且每个页面都有100个列表项。Scrapy将很轻松的并行处理16个对于网站的请求,并且假设一个请求平均需要1秒完成,那么你将在1秒内爬取16个页面。乘上每个页面的列表数目,你将在1秒内生成1600个列表。假设你必须将这些列表存储在一个高并发的云存储上,存储每个列表平均需要耗时3秒,那么就意味着我们需要同时并行运行1600*3=4800个写请求(你将会从章节9:管道方法中看到很多类似的有趣的计算)。对于一个传统的多线程应用,这将需要4800个线程,这对你和你的操作系统而言都是很糟糕的体验。在Scrapy中,4800个并发的请求很平常,只要你的操作系统支持就可以了。更进一步来说,SCrapy对于内存的需求和你抓取列表的数据量非常接近,这和多线程正好相反,多线程中的每个线程相比列表的大小都增加了很多额外的开销。

    简单来说,速度慢或者不可预测的网站,数据库或远程API将不会对你建立的scraper性能造成影响,因为可以同时并行的运行许多请求并且在一个线程中进行管理。和多线程应用相比,可以使用更简单的代码同时运行多个抓取器和其他应用,这将会降低费用。

    更多喜欢Scrapy的理由:

    Scrapy已经存在5年多的时间了,现在已经成熟稳定了。除了我们之前章节提到过的性能优势外,还有其他原因让你喜欢Scrapy:

    Scrapy可以读懂破损的HTML:

    你可以从Scrapy中直接使用BeautifulSoup或者LXML. 但是Scrapy提供selectors--一个相对lxml更高级的XPATH解析器。它可以有效的处理破损的HTML代码和令人费解的编码

    社区:

    Scrapy有一个充满活力的社区。看看在

    https://groups.google.com/forum/#!forum/scrapy-users上面的邮件列表和在Stack Overflow上的数以千计的问题。大多数的答案在几分钟内得到答复。更多的社区资源请参考http://scrapy.org/community/

    由社区维护的组织有序的代码:

    Scrapy要求用标准的方式来组织你的代码。你编写爬虫和管道的python模块,你就可以自动使引擎的效率提高。如果你在网上搜索,就会发现有大量的人有使用Scrapy的经验。这就意味着你可以方便的找到人来维护和扩展你的代码。无论谁加入你的团队都不必经历曲线的学习来理解你的独特爬虫。

    有质量的更新:

    如果你看下发布文档(http://doc.scrapy.org/en/latest/news.html), 你将会注意到有不断增长的关于特性,bug的修复。

    后面关于本书的目的这里就没再翻译了。

  • 相关阅读:
    CF div2 325 C
    CF div2 325 B
    CF div2 325 A
    CF div2 322 C
    CF div2 322 B
    CF div2 322 A
    Sudoku Solver POJ 2676 LightOJ 1397
    逆序数(归并排序 )
    RMQ算法
    Socket编程:listen()函数英文翻译
  • 原文地址:https://www.cnblogs.com/zhanghongfeng/p/7706297.html
Copyright © 2011-2022 走看看