工作原理
为规模化而构建的项目
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
快速且强大
异步引擎可同时抓取多个页面,并自动处理重试、限流和缓存。
可定制
通过可插拔的爬虫、中间件和管道,使用纯 Python 控制抓取的每一步。
开源
完全免费且基于 BSD 许可证,由 500 多位贡献者共同打造,并深受数百万开发者的信赖。
内置功能丰富
你需要的一切,皆已内置
选择一个功能以查看代码示例。
- 强大的选择器
- 使用 CSS 或 XPath 进行提取——可自由混合使用。
- 规模化抓取
- 具备智能、友好的限流机制的异步引擎。
- 数据项管道
- 验证、清洗并存储每一个提取到的数据项。
- 导出到任意位置
- 支持将内容导出为 JSON、CSV、S3 等格式。
- 交互式 Shell
- 在编写代码前实时测试选择器。
- 可扩展性设计
- 通过中间件、信号和扩展进行挂载。
# 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,我的自由职业生涯以及后来的爬虫业务绝不会有今天的成就。Scrapy 框架,尤其是它的文档,为任何具备基础 Python 技能的人简化了抓取过程。我不知道该怎么说,多年来我与 Scrapy 之间已经建立了一种情感纽带。”
Nishant Choudhary
DataFlirt.com 创始人
“ Scrapy:这份礼物彻底改变了网络抓取,并激励我通过 Scrapoxy 回馈社区!”
“自发布以来,Scrapy 一直是我所有项目的核心引擎。”
Fabien Vauchelles
Scrapoxy 创建者
“ Scrapy 作为一款出色的工具,能够无缝管理开放请求,使大规模数据收集变得高效且可靠。”
“凭借卓越的抓取速度,Scrapy 将复杂的网络提取任务转化为快速、精简的操作,节省了时间并最大化了输出。”
Hyder Khan
Flipdish
“ Scrapy 是 Python 网络抓取的基石。没有它,抓取将会困难得多。”
“在我的职业生涯中,我构建了数以千计的爬虫,大多都是用 Scrapy 构建的。它让我的工作轻松了许多。”
Pierluigi Vinciguerra
Databoutique.com 联合创始人兼 CTO
“ 在拥有 6 年多的网络抓取经验后,Scrapy 一直是我构建快速、可靠且可扩展数据管道的首选框架。”
“在我 6 年多的抓取经验中,没有什么能比得上 Scrapy 在性能、灵活性和社区支持之间的平衡。”
Ganesh Satheendran
Turbolab Technologies
“ 当 Google 搜索加强了 JavaScript 防御时,我们的爬虫挂了。在仓促间试图用 Puppeteer 构建替代方案无果后,我们启用了 Scrapy 和 Splash,迅速拼凑出了一个脚本。奇迹发生了——它竟然成功了!我们的 Google 基准测试再次恢复了活力。”
Adam
Proxyway