Scrapy 十年回顾:Shane Evans 访谈
Scrapy 的创建者讨论了流行的网络抓取框架的过去、现在和未来。
- 出版日期:
今年六月,Scrapy 10 正式发布已满十周年。这款开源框架最初是为了满足公司内部需求而诞生的,如今已成为网络数据抓取的支柱之一,拥有众多活跃的维护者和活跃的社区。
我们与 Scrapy 的创建者兼 Zyte 首席执行官 Shane Evans 坐下来讨论该框架的根源、多年来的发展以及它在现代网络数据收集领域中的作用。
如今,Scrapy 被认为是 Web 数据抓取领域的主流之一。但它的进步经历了漫长的道路。这个框架是如何诞生的呢?
Scrapy 最初是为解决一个实际问题而开发的实用解决方案——并非通用框架,而是我当时合作的一家初创公司的工具。2007 年,我在伦敦家具比价网站 Mydeco 的团队需要一种更好的方法来收集网络上的结构化产品数据。当时的解决方案无法满足需求,所以我们自行构建了解决方案。这个内部工具成为了 Scrapy 的早期版本。
它之所以脱颖而出,是因为它从一开始就专注于生产级——专为规模化、性能和开发者生产力而构建。它并非一个简陋的脚本;我们设计它是为了可靠高效地运行重要的爬虫任务。这种基因至今仍清晰可见。
Scrapy 开始开发时,网络抓取生态系统是什么样的?
在 2007-2008 年,数据抓取仍然只是一项小众活动。大多数开发人员都在用 urllib 或 BeautifulSoup 编写自己的脚本,或者用正则表达式拼凑一些脆弱的解决方案。当时没有专门构建的框架,当然也没有任何框架能够开箱即用地支持异步抓取、请求调度或中间件扩展。
Scrapy 改变了这一切。它为网页爬取提供了一种结构化的 Python 式方法,并引入了爬虫、项目管道和内置调度程序等概念——这些概念使得大规模生产级数据收集更加易于管理。
Scrapy 背后的主要原理是什么?它们随着时间的推移有变化吗?
Scrapy 的核心始终在于灵活性、速度和模块化。从第一天起,我们就将其构建为可扩展的——开发人员几乎可以在数据收集流程的每个步骤中插入自定义逻辑。这一原则从未改变。
Scrapy 的演变在于如何融入更广泛的 Python 和数据生态系统。随着时间的推移,它与存储、可观察性甚至浏览器自动化工具的集成度得到了提升。但最初的目标——帮助开发者构建清晰、可维护且可扩展的爬虫——至今仍是该项目的驱动力。
构建 Scrapy 这么长时间以来,是一个积累的过程。您有什么特别的里程碑想分享一下吗?
当然。对我来说,有几个里程碑非常突出:
- 2008 – 我们开源了 Scrapy,使其成为 GitHub 上首批专用抓取框架之一。
- 2015 – Scrapy 1.0 发布,标志着 API 稳定性和快速增长的用户群生产准备迈出了重要一步。
- Python 3 支持 – 这是一项巨大的、由社区驱动的努力,确保 Scrapy 与 Python 语言一起发展。
- 被主要研究、新闻和企业团队采用 – 虽然很难量化,但看到 Scrapy 为从调查性新闻到 AI 管道等各个领域提供支持,已经令人难以置信地感到欣慰。”
您是 Scrapy 的创始人和 Zyte 的首席执行官,但 Scrapy 也是一个开源项目,背后有一个庞大的社区。社区的角色是什么?它与框架的关系是什么?
如果没有社区,Scrapy 就不会有今天的成就。虽然 Zyte 多年来一直是主要的贡献者和维护者,但更广泛的开源社区在推动功能发展、标记边缘案例、改进文档以及保持框架的 Pythonic 风格和相关性方面发挥了巨大作用。
这是一个真正的协作生态系统。我们指导路线图并审核贡献,但许多最佳想法和改进都来自于致力于实际数据抓取系统的贡献者,他们将自己的经验和成果带回了项目。
如今,网页爬虫专业人士拥有种类繁多的工具,甚至有各种类别的工具可供选择。您认为 Scrapy 在当前市场中处于什么位置?
对于希望在开源环境中获得完全控制和自定义功能的开发者来说,Scrapy 仍然是首选框架。它并非旨在成为无代码解决方案或一体化云服务。它专为注重性能、可扩展性和长期可维护性的团队打造——这些团队通常需要在爬虫程序的每一层集成自定义逻辑。
尽管如此,Scrapy 与现代工具集成良好。它可以与无头浏览器配对,容器化,或在无服务器工作流中运行。在许多重要的数据抓取操作中,Scrapy 仍然是可靠的骨干。
在我们庆祝 Scrapy 周年纪念日之际,您能分享一下该项目的一些未来计划吗?
未来的重点是 Scrapy 的现代化,同时坚守其最初的原则。这意味着要增强对现代 Web 技术(尤其是 JavaScript 密集型网站)的支持,改进与 Playwright 等无头浏览器的集成,并继续简化开发者体验——尤其是在配置和可观察性方面。
我们也在思考如何在日益受人工智能影响的世界中保持竞争力。更智能的重试逻辑、自适应节流以及 LLM 辅助提取都是我们正在探索的可能性。我们的目标是确保 Scrapy 始终保持敏锐,能够满足未来网络爬虫的任何需求。