Scrapy — open source web scraping framework for Python

Scrapy — open source web scraping framework for Python

Scrapy is the leading open source Python framework for web scraping — fast, asynchronous, extensible, and BSD-licensed. Trusted by millions of developers.

访问网站
我的收藏187 次访问更新于 a month ago反馈
Scrapy — open source web scraping framework for Python screenshot

详细介绍

Scrapy 简介

Scrapy 是全球使用最广泛的开源数据提取框架,由 Zyte 维护并得到超过 500 名其他贡献者的支持。它设计精简、天然可扩展,深受专业人士信赖,被用于大规模提取公开网络数据。用户可以通过 uv add scrapy 快速添加 Scrapy 到项目中。

主要功能

项目化构建

Scrapy 会生成一个完整的项目,而非一次性脚本,使爬虫、设置、数据项和管道在爬虫规模增长时保持有序。使用 scrapy startproject 初始化项目结构,scrapy crawl 运行爬虫。典型项目结构如下:

复制代码
quotes/                      # project root
├── scrapy.cfg               # deploy configuration
└── quotes/                  # the project's Python module
    ├── __init__.py
    ├── items.py             # define the data you extract
    ├── middlewares.py
    ├── pipelines.py         # clean, validate & store items
    ├── settings.py          # project-wide configuration
    └── spiders/             # your spiders live here
        ├── __init__.py
        └── quotes.py        # one spider per source

核心能力

Scrapy 核心内置了所需的一切,其余功能可通过扩展获得:

  • 强大的选择器:使用 CSS 或 XPath 提取(可自由混用),支持提取属性、设置默认值以及直接应用正则。
  • 大规模爬取:异步引擎配合智能、礼貌的节流策略。
  • 数据项管道:验证、清理并存储每一个数据项。
  • 随处导出:通过 Feed 导出到 JSON、CSV、S3 等。
  • 交互式 Shell:在编写代码前实时测试选择器。
  • 可扩展设计:可挂钩中间件、信号和扩展。

选择器示例代码:

python 复制代码
# CSS or XPath — your choice, even mixed
title = response.css("h1::text").get()
price = response.xpath("//p[@class='price_color']/text()").get()
# Get everything, with a sensible default
tags = response.css("div.tags a.tag::text").getall()
image = response.css("img::attr(src)").get(default="")
# Run regex straight off a selector
sku = response.css("p.sku::text").re_first(r"SKU:\s*(\w+)")

生态系统扩展

Scrapy 保持精简设计,社区和 Zyte 的扩展生态可在需要时添加浏览器渲染、监控、防封禁等功能:

  • 浏览器渲染:scrapy-playwright
  • 监控:spidermon
  • 防封禁:scrapy-zyte-api
  • 页面对象:scrapy-poet

AI 工具支持

Scrapy 提供由 Zyte 创建的 Agent Skills,可将一个 URL 转化为生产就绪的爬虫——支持从 Claude Code、GitHub Copilot 或任何 AI 代理中操作。

持续维护

Scrapy 已持续开发超过 15 年,拥有定期发布版本的维护团队和 500+ 贡献者。近期版本如 v2.17.0(2026-07-07)支持 HTTP/2 和 SOCKS 代理及改进的 TLS 版本设置;v2.16.0(2026-05-19)提供官方 Python 3.14 支持;v2.15.0(2026-04-09)引入实验性无 reactor 模式和基于 httpx 的下载处理器。

适用场景

Scrapy 适用于需要大规模、可靠、可扩展地提取公开网络数据的场景,包括:

  • 自由职业者或企业构建数据提取业务
  • 开发者在生产环境中管理开放请求与大型数据采集
  • 在搜索引擎强制 JavaScript 渲染等复杂情况下快速重建爬取脚本
  • 与 AI 代理配合,从 URL 快速生成可用于生产的爬虫

众多开发者与企业(如 DataFlirt.com、Scrapoxy、Flipdish、Databoutique.com、Turbolab Technologies、Proxyway 等)已在生产环境中信任并使用 Scrapy。

Scrapy — open source web scraping framework for Python - 小禾笔记