我一直在广泛使用Scrapy
网页抓取框架,但是,最近我发现还有另一个名为pyspider
的框架/系统,根据它的github页面,它是新鲜,积极发展和受欢迎。
pyspider
的主页列出了开箱即用的几项内容:
强大的WebUI,包括脚本编辑器,任务监视器,项目管理器和结果查看器
支持Javascript页面!
任务优先级,重试,期刊和 按索引页面中的年龄或标记重新抓取(如更新时间)
分布式架构
这些是Scrapy
本身没有提供的东西,但是,在portia
(对于Web UI)的帮助下,scrapyjs
(对于js页面)和scrapyd
(通过API部署和分发)。
只有pyspider
可以替代所有这些工具吗?换句话说,pyspider
是Scrapy的直接替代品吗?如果没有,那么它涵盖了哪些用例?
我希望我不会越过“过于宽泛”或“基于意见”的界限。
答案 0 :(得分:24)
蜘蛛永远不会停止,直到WWW死亡。 (信息正在变化,数据在网站上更新,蜘蛛应该有能力和责任去抓取最新数据。这就是为什么pyspider有URL数据库,强大的调度程序,@every
,age
等等..)
pyspider不仅仅是一个框架。 (组件在隔离的进程中运行,lite - all
版本也作为服务运行,您不需要Python环境而是浏览器,有关获取或调度的所有内容都由脚本通过API控制而不是启动参数或全球配置,资源/项目由pyspider等管理......)
pyspider是一个蜘蛛系统。 (任何组件都可以更换,甚至可以用C / C ++ / Java或任何语言开发,以获得更好的性能或更大的容量)
和
on_start
vs start_url
download_delay
return json
vs class Item
Pipeline
set
事实上,我没有提到Scrapy。 pyspider与Scrapy真的不同。
但是,为什么不try it yourself? pyspider也是fast,有易于使用的API,你可以不用安装就试试。
答案 1 :(得分:2)
由于我同时使用scrapy和pyspider,所以我建议以下几点:
如果网站真的很小/很简单,请先尝试pyspider,因为它几乎满足了您的所有需求
但是,如果您尝试过pyspider却发现它不能满足您的需求,那么该使用scrapy了。 -将on_start迁移到start_request -迁移index_page进行解析 -将detail_age迁移到detail_age -将self.crawl更改为response.follow
然后,您快完成了。 现在,您可以使用scrapy的高级功能,例如中间件,物品,管道等。