Scrapy 2.17 文档
Scrapy 是一个快速的高级网络爬虫和网页抓取框架,用于抓取网站并从页面中提取结构化数据。它可以用于从数据挖掘到监控以及自动化测试的广泛用途。
获取帮助
遇到麻烦了?我们很乐意提供帮助!
尝试阅读 常见问题 (FAQ) – 它包含了一些常见问题的答案。
在 StackOverflow 上使用 scrapy 标签提问或搜索问题。
在 Scrapy subreddit 中提问或搜索问题。
在 scrapy-users 邮件列表的归档中搜索问题。
在 #scrapy IRC 频道提问,
在我们的问题追踪器中报告 Scrapy 的 Bug。
加入 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。
- 使用浏览器的开发者工具进行抓取
了解如何使用浏览器的开发者工具进行抓取。
- 选择动态加载的内容
读取动态加载的网页数据。
- 调试内存泄漏
了解如何查找并消除爬虫中的内存泄漏。
- 下载并处理文件和图像
下载与抓取 Item 关联的文件和/或图像。
- 部署爬虫
部署您的 Scrapy 爬虫并在远程服务器上运行它们。
- 自动限速 (AutoThrottle) 扩展
根据负载动态调整抓取速率。
- 基准测试 (Benchmarking)
检查 Scrapy 在您的硬件上的性能表现。
- 作业:暂停与恢复爬取
了解如何针对大型爬虫暂停和恢复抓取。
- 协程 (Coroutines)
使用 协程语法。
- asyncio
使用
asyncio以及基于asyncio的库。
扩展 Scrapy
- 架构概览
了解 Scrapy 架构。
- 插件 (Add-ons)
启用并配置第三方扩展。
- 下载器中间件 (Downloader Middleware)
自定义请求和下载页面的方式。
- 爬虫中间件 (Spider Middleware)
自定义爬虫的输入和输出。
- 扩展 (Extensions)
使用您的自定义功能扩展 Scrapy
- 信号 (Signals)
查看所有可用的信号以及如何使用它们。
- 调度器 (Scheduler)
了解调度器(Scheduler)组件。
- 项目导出器 (Item Exporters)
快速将抓取的 Item 导出到文件(XML、CSV 等)。
- 下载处理器 (Download handlers)
自定义请求的下载方式或添加对新 URL 方案的支持。
- 组件 (Components)
学习构建自定义 Scrapy 组件时的常用 API 和一些良好实践。
- 核心 API
在扩展和中间件中使用它来扩展 Scrapy 功能。
其他所有内容
- 发行说明
查看最近 Scrapy 版本中的更改。
- 为 Scrapy 贡献代码
了解如何为 Scrapy 项目做出贡献。
- 版本控制与 API 稳定性
了解 Scrapy 的版本管理和 API 稳定性。