可以用pyspider取代Scrapy吗?

时间:2014-12-02 06:33:53

标签: python web-scraping scrapy web-crawler pyspider

我一直在广泛使用Scrapy网页抓取框架,但是,最近我发现还有另一个名为pyspider的框架/系统,根据它的github页面,它是新鲜,积极发展和受欢迎。

pyspider的主页列出了开箱即用的几项内容:

  
      
  • 强大的WebUI,包括脚本编辑器,任务监视器,项目管理器和结果查看器

  •   
  • 支持Javascript页面!

  •   
  • 任务优先级,重试,期刊和   按索引页面中的年龄或标记重新抓取(如更新时间)

  •   
  • 分布式架构

  •   

这些是Scrapy本身没有提供的东西,但是,在portia(对于Web UI)的帮助下,scrapyjs(对于js页面)和scrapyd(通过API部署和分发)。

只有pyspider可以替代所有这些工具吗?换句话说,pyspider是Scrapy的直接替代品吗?如果没有,那么它涵盖了哪些用例?

我希望我不会越过“过于宽泛”或“基于意见”的界限。

2 个答案:

答案 0 :(得分:24)

pyspider和Scrapy具有相同的目的,网络抓取,但对此有不同的看法。

  • 蜘蛛永远不会停止,直到WWW死亡。 (信息正在变化,数据在网站上更新,蜘蛛应该有能力和责任去抓取最新数据。这就是为什么pyspider有URL数据库,强大的调度程序,@everyage等等..)

  • pyspider不仅仅是一个框架。 (组件在隔离的进程中运行,lite - all版本也作为服务运行,您不需要Python环境而是浏览器,有关获取或调度的所有内容都由脚本通过API控制而不是启动参数或全球配置,资源/项目由pyspider等管理......)

  • pyspider是一个蜘蛛系统。 (任何组件都可以更换,甚至可以用C / C ++ / Java或任何语言开发,以获得更好的性能或更大的容量)

  • on_start vs start_url
  • token bucket流量控制与download_delay
  • return json vs class Item
  • 邮件队列vs Pipeline
  • 内置网址数据库vs set
  • 持久性与内存中
  • PyQuery +您喜欢的任何第三个包与内置的CSS / Xpath支持

事实上,我没有提到Scrapy。 pyspider与Scrapy真的不同。

但是,为什么不try it yourself? pyspider也是fast,有易于使用的API,你可以不用安装就试试。

答案 1 :(得分:2)

由于我同时使用scrapy和pyspider,所以我建议以下几点:

如果网站真的很小/很简单,请先尝试pyspider,因为它几乎满足了您的所有需求

  • 使用webui设置项目
  • 尝试在线代码编辑器并立即查看解析结果
  • 在浏览器中轻松查看结果
  • 运行/暂停项目
  • 设置到期日期,以便它可以重新处理网址

但是,如果您尝试过pyspider却发现它不能满足您的需求,那么该使用scrapy了。  -将on_start迁移到start_request  -迁移index_page进行解析  -将detail_age迁移到detail_age  -将self.crawl更改为response.follow

然后,您快完成了。 现在,您可以使用scrapy的高级功能,例如中间件,物品,管道等。