我一直在非常广泛地使用 Scrapy
网络抓取框架,但是,最近我发现还有另一个名为 pyspider
的框架/系统,根据它的 github 页面,它是新鲜的,积极开发和流行的。
pyspider
的主页列出了几个开箱即用支持的东西:
Powerful WebUI with script editor, task monitor, project manager and result viewer
Javascript pages supported!
Task priority, retry, periodical and recrawl by age or marks in index page (like update time)
Distributed architecture
这些是 Scrapy
本身不提供的东西,但是,在 portia
的帮助下是可能的(用于 Web UI),scrapyjs
(用于 js 页面)和 scrapyd
(通过 API 部署和分发)。
pyspider
真的可以代替所有这些工具吗?换句话说,pyspider
是 Scrapy 的直接替代品吗?如果没有,那么它涵盖了哪些用例?
我希望我没有越过“过于宽泛”或“基于意见”的界限。
最佳答案
pyspider 和 Scrapy 具有相同的目的,即网络抓取,但对这样做的看法不同。
蜘蛛永远不会停止,直到 WWW 死了。 (信息在变化,数据在网站更新,spider应该有能力和责任抓取最新数据。这就是为什么pyspider有URL数据库,强大的调度器,
@every
,age
等。)pyspider 是一个服务而不是一个框架。 (组件在独立进程中运行,lite -
all
版本也作为服务运行,您不需要 Python 环境而是浏览器,有关 fetch 或 schedule 的所有内容都由脚本通过 API 而不是启动来控制参数或全局配置,资源/项目由 pyspider 等管理)pyspider 是一个蜘蛛系统。 (可以替换任何组件,甚至可以用 C/C++/Java 或任何语言开发,以获得更好的性能或更大的容量)
和
on_start
与start_url
- token bucket流量控制 vs
download_delay
return json
vsclass Item
- 消息队列与
管道
- 内置 url 数据库 vs
set
- 持久性与内存中
- PyQuery + 你喜欢的任何第三个包与内置的 CSS/Xpath 支持
事实上,我并没有过多地引用 Scrapy。 pyspider 和 Scrapy 真的不一样。
但是,为什么不 try it yourself ? pyspider 也是 fast ,具有易于使用的 API,无需安装即可试用。
关于python - Scrapy可以用pyspider代替吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27243246/