可以用pyspider取代Scrapy吗?

ale*_*cxe 21 python web-crawler scrapy web-scraping pyspider

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

pyspider的主页列出了支持开箱即用的几件事:

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

  • 支持Javascript页面!

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

  • 分布式架构

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

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

我希望我不会越过"过于宽泛"或"基于意见"的界限.

Bin*_*nux 26

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

  • 蜘蛛永远不会停止,直到WWW死了.(信息被改变,数据在网站更新,蜘蛛应该有刮最新数据的能力和责任.这就是为什么pyspider具有URL数据库,强大的调度,@every,age,等..)

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

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

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

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

但是,为什么不亲自尝试一下呢?pyspider也很快,具有易于使用的API,您无需安装即可试用.

  • 看起来您是您推荐的工具的作者.那很好,但是你可以在这样做的时候添加完整的披露说明吗? (10认同)

小智 7

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

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

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

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

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