一、Scrapy 框架概述
- 基本定义
- Scrapy 是一个用 Python 编写的开源网络爬虫框架。它旨在快速、高效地抓取网页数据,可处理大规模的数据抓取任务。
- 基于 Twisted 异步网络库构建,能够并发地处理多个请求,大大提高了数据抓取的速度。
- 遵循 “请求 - 响应” 模型,用户只需定义好初始请求、解析规则等,框架就能自动完成数据的抓取和处理。
- 主要优势
- 高效性:
- 采用异步非阻塞的网络请求机制,在同一时间内可以处理多个请求,减少等待时间。
- 内置的调度器能够智能地管理请求队列,优先处理重要或优先级高的请求。
- 对资源的利用较为合理,在多线程或多进程环境下能充分发挥硬件性能。
- 灵活性:
- 支持多种数据提取方式,如 XPath、CSS 选择器等,可以根据网页结构灵活选择。
- 可定制化的中间件系统,能够方便地添加代理、设置请求头、处理响应等功能。
- 可以轻松地与数据库、数据存储系统集成,方便数据的持久化存储。
- 扩展性:
- 拥有丰富的插件和扩展库,如用于分布式爬取的 Scrapy - Redis 等。
- 良好的架构设计使得开发者可以方便地编写自定义的组件,如自定义的爬虫类、管道类等。
- 基于 Python 语言,与众多其他 Python 库有良好的兼容性,便于功能的扩展和集成。
- 高效性:
二、Scrapy 项目结构
- 核心目录
- scrapy.cfg:
- 项目的配置文件,用于定义项目的基本设置,如项目名称、部署相关的配置等。
- 可以在其中指定 Scrapy 命令的默认设置,例如日志级别、是否启用某些扩展等。
- 是整个项目的入口配置文件,Scrapy 工具在运行项目时首先读取此文件。
- 项目名文件夹:
- 存放项目的主要代码和资源,是项目的核心目录。
- 包含了自定义的爬虫模块、管道模块、中间件模块等的代码文件。
- 可以在其中创建子目录来组织不同功能的代码,如 utils 目录用于存放工具函数代码。
- scrapy.cfg:
- 主要模块
- spiders 目录:
- 用于存放所有的爬虫类代码文件。
- 每个爬虫类通常对应一个特定的网站或数据来源,负责定义抓取的起始 URL、解析规则等。
- 可以在该目录下按照网站或功能分类创建多个爬虫文件,便于管理和维护。
- items.py:
- 定义了数据项的结构,类似于数据库中的表结构或数据模型。
- 可以在其中定义各种字段,用于存储抓取到的数据,字段的数据类型可以根据需求灵活设置。
- 方便在爬虫和管道之间传递和处理数据,保证数
- spiders 目录: