<p >
<table ><tbody ><tr ><td ><span >Project</td><td ><span >Language</td><td ><span >Star</td><td ><span >Watch</td><td ><span >Fork</td></tr><tr ><td ><span >Nutch</td><td >Java</td><td >1111</td><td >195</td><td >808</td></tr><tr ><td ><span >webmagic</td><td >Java</td><td >4216</td><td >618</td><td >2306</td></tr><tr ><td ><span >WebCollector</td><td >1222</td><td >255</td><td >958</td></tr><tr ><td ><span >heritrix3</td><td >773</td><td >141</td><td >428</td></tr><tr ><td ><span >crawler4j</td><td >1831</td><td >242</td><td >1136</td></tr><tr ><td ><span >PyspIDer</td><td >Python</td><td >8581</td><td >687</td><td >2273</td></tr><tr ><td ><span >Scrapy</td><td >Python</td><td >19642</td><td >1405</td><td >5261</td></tr></table><p >看到了吗?星星数排名第一的Scrapy比其他所有的加起来都要多,我仿佛听到他这样说:<p ><p ><p ><p ><p ><p ><p ><p ><p >优点:<ul ><li ><p >极其灵活的定制化爬取。<li ><p >社区人数多、文档完善。<li ><p >URL去重采用布隆过滤器方案。<li ><p >可以处理不完整的HTML,Scrapy已经提供了selectors(一个在lxml的基础上提供了更高级的接口),可以高效地处理不完整的HTML代码。<p >缺点:<ul ><li ><p >不支持分布式部署。<li ><p >原生不支持抓取JavaScript的页面。<li ><p >全命令行 *** 作,对用户不友好,需要一定学习周期。<p >结论<p >篇幅有限,就先选择这三个最有代表性的框架进行PK。他们都有远超别人的优点,比如:Nutch天生的搜索引擎解决方案、PyspIDer产品级的WebUI、Scrapy最灵活的定制化爬取。也都各自致命的缺点,比如Scrapy不支持分布式部署,PyspIDer不够灵活,Nutch和搜索绑定。究竟该怎么选择呢?<p >我们的目标是做纯粹的爬虫,不是搜索引擎,所以先把Nutch排除掉,剩下人性化的PyspIDer和高可定制的Scrapy。Scrapy的灵活性几乎能够让我们完成任何苛刻的抓取需求,它的“难用”也让我们不知不觉的研究爬虫技术。现在还不是享受PyspIDer的时候,目前的当务之急是打好基础,应该学习最接近爬虫本质的框架,了解它的原理,所以把PyspIDer也排除掉。<p >最终,理性的从个人的需求角度对比,还是Scrapy胜出!其实Scrapy还有更多优点:<ul ><li ><p >HTML,XML源数据选择及提取的原生支持。<li ><p >提供了一系列在spIDer之间共享的可复用的过滤器(即 Item Loaders),对智能处理爬取数据提供了内置支持。<li ><p >通过 Feed导出 提供了多格式(JsON、CSV、XML),多存储后端(FTP、S3、本地文件系统)的内置支持。<li ><p >提供了media pipeline,可以 自动下载 爬取到的数据中的图片(或者其他资源)。<li ><p >高扩展性。您可以通过使用 signals ,设计好的API(中间件,extensions,pipelines)来定制实现您的功能。<li ><p >内置的中间件及扩展为下列功能提供了支持:<ul ><li ><p >cookies and session 处理<li ><p >http 压缩<li ><p >http 认证<li ><p >http 缓存<li ><p >user-agent模拟<li ><p >robots.txt<li ><p >爬取深度限制<ul ><li ><p >针对非英语语系中不标准或者错误的编码声明,提供了自动检测以及健壮的编码支持。<li ><p >支持根据模板生成爬虫。在加速爬虫创建的同时,保持在大型项目中的代码更为一致。<li ><p >针对多爬虫下性能评估、失败检测,提供了可扩展的 状态收集工具 。<li ><p >提供 交互式shell终端,为您测试XPath表达式,编写和调试爬虫提供了极大的方便。<li ><p >提供 System service,简化在生产环境的部署及运行。<li ><p >内置 Telnet终端 ,通过在Scrapy进程中钩入Python终端,使您可以查看并且调试爬虫。<li ><p >Logging 为您在爬取过程中捕捉错误提供了方便。<li ><p >支持 Sitemaps 爬取。<li ><p >具有缓存的DNS解析器。<p >下一步<p >吹了半天的Scrapy,时间也到了,如果大家能够喜欢上它,学习的效率一定会成倍提升!下次我会为大家带来满满的干货,并完成更具挑战性的爬虫任务,我们下期再见!<p >原文链接:http://www.cnblogs.com/tuohai666/p/8861422.HTML<p >欢迎关注我的博客:https://home.cnblogs.com/u/sm123456/ 总结以上是内存溢出为你收集整理的开源爬虫框架哪家强?是骡子是马,拉出来溜溜就知道了!全部内容,希望文章能够帮你解决开源爬虫框架哪家强?是骡子是马,拉出来溜溜就知道了!所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)