Scrapy十一个健壮的,用来从互联网上抓取数据的web框架,Scrapy只须要一个配置文件就能组合各类组件和配置选项,而且Scrapy是基于事件(event-based)的架构,使得咱们能够级联多个操做,包括清理、组织、存储数据到数据库等等。假设如今你要抓取一个网站,这个网站的每一页都有一百个条目,Scrapy能够绝不费劲地同时对这个网站发起16个请求,假如每一个请求须要一秒钟来完成,你就至关于每秒钟爬取16个页面,至关于每秒钟生成了1600个条目,假如要把这些条目同时存储到云上,每个条目的存储须要3秒钟(假设的),为了处理这16个请求,就须要运行1600 *3 = 4800个并发的写入请求,对于一个传统的多线程程序来讲,就须要转换成4800个线程,这会对系统形成极大的压力。而对于Scrapy来讲,只要你的硬件过关, 4800个并发请求是没有问题的。html
Scrapy已经发展了5年有多,已经变得成熟和稳定,除了上面提到的性能优势外,Scrapy还有如下几点优势:web
你能够在Scrapy中使用Beautiful Soup或者lxml,但Scrapy已经提供了selectors(一个在lxml的基础上提供了更高级的接口),能够高效地处理不完整的HTML代码数据库
Scrapy拥有一个活跃的社区,尤为是在Stack Overflow(https://stackoverflow.com/questions/tagged/Scrapy)上有上千个问题的讨论,更多的社区论坛能够参考这里:http://Scrapy.org/community/多线程
Scrapy要求你用标准的方式去组织你的代码,因此你在与他人合做时,别人不用苦苦研究你那拥有奇淫技巧的爬虫架构
经过观察Scrapy的新闻发布页(http://doc.Scrapy.org/en/latest/news.html),就能够看到在增长的新特性和bug修正并发
在爬取信息的时候有两个最重要的原则必定要坚守:框架
一个普通的网站浏览者会花上几秒钟去浏览一个网页,可是一个爬虫能够在一秒钟内下载几十个网页,这会对网站和网站管理员形成压力。经过使用节流阀来自动调整你的下载速率至普通用户级别,若是你的爬取响应时间愈来愈长,就要减小你的爬取强度。而Scrapy都提供了以上功能性能
在你要爬取一个网站以前,最好先查看版权信息声明,弄明白你被容许的行动范围,大多数的网站都容许你下载他们的信息,前提是你不声明对这些信息的版权。要注意的是,Scrapy会使用你的爬虫名称做为User-Agent,来让网站管理员识别出这是一个由爬虫发出的请求。Scrapy也提供一个名为RobotsTxtMiddleware的插件,这个插件能够自动遵照网站的robots.txt协议。网站