25

我一直在Scrapy非常广泛地使用网络抓取框架,但是,最近我发现还有另一个名为 的框架/系统pyspider,根据它的 github 页面,它是新鲜的、积极开发和流行的。

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

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

  • 支持 Javascript 页面!

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

  • 分布式架构

这些是Scrapy本身不提供的东西,但是,借助portia(Web UI)、scrapyjs(js 页面)和scrapyd(通过API 部署和分发)是可能的。

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

我希望我没有越过“太宽泛”或“基于意见”的界限。

4

2 回答 2

29

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

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

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

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

  • on_start对比start_url
  • 令牌桶流量控制 vsdownload_delay
  • return json对比class Item
  • 消息队列 vsPipeline
  • 内置 url 数据库 vsset
  • 持久性与内存中
  • PyQuery + 你喜欢的任何第三个包 vs 内置 CSS/Xpath 支持

事实上,我并没有从 Scrapy 中提到太多。pyspider 确实与 Scrapy 不同。

但是,为什么不自己尝试呢?pyspider 速度也很快,有易于使用的 API,您无需安装即可试用。

于 2014-12-02T09:59:38.120 回答
7

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

如果网站真的很小/很简单,请先尝试 pyspider,因为它几乎拥有您需要的一切

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

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

然后你几乎完成了。现在您可以使用 scrapy 的高级功能,如中间件、项目、管道等。

于 2019-05-24T01:01:56.757 回答