zoukankan      html  css  js  c++  java
  • Learning Scrapy笔记(一)- Scrapy简单介绍

    Scrapy简述

    Scrapy十一个健壮的,用来从互联网上抓取数据的web框架,Scrapy只需要一个配置文件就能组合各种组件和配置选项,并且Scrapy是基于事件(event-based)的架构,使得我们可以级联多个操作,包括清理、组织、存储数据到数据库等等。假设现在你要抓取一个网站,这个网站的每一页都有一百个条目,Scrapy可以毫不费劲地同时对这个网站发起16个请求,假如每个请求需要一秒钟来完成,你就相当于每秒钟爬取16个页面,相当于每秒钟生成了1600个条目,假如要把这些条目同时存储到云上,每一个条目的存储需要3秒钟(假设的),为了处理这16个请求,就需要运行1600 *3 = 4800个并发的写入请求,对于一个传统的多线程程序来说,就需要转换成4800个线程,这会对系统造成极大的压力。而对于Scrapy来说,只要你的硬件过关, 4800个并发请求是没有问题的。

    使用Scrapy的更多理由

    Scrapy已经发展了5年有多,已经变得成熟和稳定,除了上面提到的性能优点外,Scrapy还有以下几点优点:

    • Scrapy可以处理不完整的HTML

      你可以在Scrapy中使用Beautiful Soup或者lxml,但Scrapy已经提供了selectors(一个在lxml的基础上提供了更高级的接口),可以高效地处理不完整的HTML代码

    • 活跃的Scrapy社区

      Scrapy拥有一个活跃的社区,尤其是在Stack Overflow(https://stackoverflow.com/questions/tagged/Scrapy)上有上千个问题的讨论,更多的社区论坛可以参考这里:http://Scrapy.org/community/

    • 由社区维护的具有良好架构的代码

      Scrapy要求你用标准的方式去组织你的代码,所以你在与他人合作时,别人不用苦苦研究你那拥有奇淫技巧的爬虫

    • 新特性越来越多且质量稳定

      通过观察Scrapy的新闻发布页(http://doc.Scrapy.org/en/latest/news.html),就可以看到在增加的新特性和bug修正

    忠告

    在爬取信息的时候有两个最重要的原则一定要坚守:

    • 不要产生类似于DOS攻击的行为

      一个普通的网站浏览者会花上几秒钟去浏览一个网页,但是一个爬虫可以在一秒钟内下载几十个网页,这会对网站和网站管理员造成压力。通过使用节流阀来自动调整你的下载速率至普通用户级别,如果你的爬取响应时间越来越长,就要减少你的爬取强度。而Scrapy都提供了以上功能

    • 不要侵犯他人的版权

      在你要爬取一个网站之前,最好先查看版权信息声明,弄明白你被允许的行动范围,大多数的网站都允许你下载他们的信息,前提是你不声明对这些信息的版权。要注意的是,Scrapy会使用你的爬虫名称作为User-Agent,来让网站管理员识别出这是一个由爬虫发出的请求。Scrapy也提供一个名为RobotsTxtMiddleware的插件,这个插件可以自动遵守网站的robots.txt协议。

  • 相关阅读:
    request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会
    HTTP之Content-Length
    关于spring3中No Session found for current thread!and Transaction的配置和管理(转)
    Java数据类型和MySql数据类型对应一览
    Spring MVC 解读——View,ViewResolver(转)
    LeetCode 441. Arranging Coins
    LeetCode 415. Add Strings
    LeetCode 400. Nth Digit
    LeetCode 367. Valid Perfect Square
    LeetCode 326. Power of Three
  • 原文地址:https://www.cnblogs.com/kylinlin/p/5391480.html
Copyright © 2011-2022 走看看