Scrapy 2.17 文档
Scrapy 是一个快速的高级网络爬虫和网页抓取框架,用于爬取网站并从其页面中提取结构化数据。它可以用于从数据挖掘到监控和自动化测试的广泛用途。
获取帮助
遇到困难?我们愿意提供帮助!
尝试阅读 FAQ – 里面有一些常见问题的解答。
在 StackOverflow 上使用 scrapy 标签提问或搜索问题。
在 Scrapy subreddit 中提问或搜索问题。
在 scrapy-users 邮件列表存档中搜索问题。
在 #scrapy IRC 频道提问。
在我们的 问题追踪器(issue tracker)中报告 Scrapy 的错误。
加入 Discord 社区 Scrapy Discord。
第一步
基本概念
- 命令行工具
了解用于管理 Scrapy 项目的命令行工具。
- 爬虫 (Spiders)
编写爬取网站的规则。
- 选择器 (Selectors)
使用 XPath 从网页中提取数据。
- Scrapy 终端 (Scrapy shell)
在交互式环境中测试您的提取代码。
- 项目 (Items)
定义您想要抓取的数据。
- 项目加载器 (Item Loaders)
使用提取的数据填充您的 Item。
- 项目管道 (Item Pipeline)
后处理并存储您抓取的数据。
- Feed 导出 (Feed exports)
使用不同的格式和存储方式输出抓取的数据。
- 请求与响应 (Requests and Responses)
了解用于表示 HTTP 请求和响应的类。
- 链接提取器 (Link Extractors)
用于从页面中提取后续链接的便捷类。
- 设置 (Settings)
了解如何配置 Scrapy 并查看所有 可用设置。
- 异常 (Exceptions)
查看所有可用的异常及其含义。
内置服务
- 日志记录 (Logging)
了解如何在 Scrapy 中使用 Python 内置的日志功能。
- 统计收集 (Stats Collection)
收集关于爬虫的统计信息。
- Telnet 终端 (Telnet Console)
使用内置的 Python 控制台检查运行中的爬虫。
解决特定问题
- 常见问题 (FAQ)
获取最常见问题的解答。
- 调试爬虫
了解如何调试 Scrapy 爬虫的常见问题。
- 爬虫契约 (Spiders Contracts)
了解如何使用 contract 来测试您的爬虫。
- 常用实践
熟悉一些 Scrapy 的常用做法。
- 安全
了解 Scrapy 默认设置的安全性影响以及如何加强其安全性。
- 通用爬取 (Broad Crawls)
优化 Scrapy 以并行爬取大量域名。
- 使用浏览器的开发者工具进行抓取
了解如何使用浏览器的开发者工具进行抓取。
- 选择动态加载的内容
读取动态加载的网页数据。
- 调试内存泄漏
了解如何发现并消除爬虫中的内存泄漏。
- 下载并处理文件和图像
下载与抓取项目关联的文件和/或图片。
- 部署爬虫
部署 Scrapy 爬虫并在远程服务器上运行它们。
- 自动限速 (AutoThrottle) 扩展
根据负载动态调整爬取速率。
- 基准测试 (Benchmarking)
检查 Scrapy 在您的硬件上的性能表现。
- 作业:暂停与恢复爬取
了解如何为大型爬虫暂停和恢复爬取任务。
- 协程 (Coroutines)
使用 协程语法。
- asyncio
扩展 Scrapy
- 架构概览
了解 Scrapy 架构。
- 插件 (Add-ons)
启用并配置第三方扩展。
- 下载器中间件 (Downloader Middleware)
自定义页面的请求和下载方式。
- 爬虫中间件 (Spider Middleware)
自定义爬虫的输入和输出。
- 扩展 (Extensions)
使用自定义功能扩展 Scrapy
- 信号 (Signals)
查看所有可用的信号以及如何使用它们。
- 调度器 (Scheduler)
了解调度器组件。
- 项目导出器 (Item Exporters)
快速将抓取的项目导出到文件(XML、CSV 等)。
- 下载处理器 (Download handlers)
自定义请求的下载方式或添加对新 URL 方案的支持。
- 组件 (Components)
了解构建自定义 Scrapy 组件时的常用 API 和一些良好实践。
- 核心 API
在扩展和中间件中使用它来扩展 Scrapy 功能。
其他内容
- 发行说明
查看最近 Scrapy 版本中的变化。
- 为 Scrapy 贡献代码
了解如何为 Scrapy 项目做出贡献。
- 版本控制与 API 稳定性
了解 Scrapy 的版本划分和 API 稳定性。