- 引擎(Engine): 控制数据流在所有组件间流动
- 调度器(Scheduler): 管理请求队列和去重
- 下载器(Downloader): 发送HTTP请求获取响应
- 爬虫(Spider): 解析响应数据和生成新请求
- 管道(Pipeline): 处理和存储爬取的数据
demo_spider_scrapy/
├── scrapy.cfg # Scrapy项目配置文件
├── requirements.txt # Python依赖包
├── run_demo.py # 演示运行脚本
├── README.md # 项目说明文档
└── game/ # Scrapy项目主目录
├── __init__.py
├── items.py # 数据结构定义
├── pipelines.py # 数据管道处理
├── settings.py # 项目配置
└── spiders/ # 爬虫程序目录
├── __init__.py
├── game_4399.py # 4399游戏爬虫(博客原例)
├── demo_spider.py # 演示爬虫
└── quotes_spider.py # 名言爬虫
GameItem
: 游戏数据结构(名称、类别、日期)NewsItem
: 新闻数据结构(标题、内容、时间、来源)
GamePipeline
: CSV文件存储管道JsonPipeline
: JSON文件存储管道StatisticsPipeline
: 数据统计管道GameMySqlPipeline
: MySQL数据库存储管道(模板)
game_4399
: 爬取4399游戏网站(博客原例)demo
: 演示基础爬虫功能quotes
: 爬取名言网站展示真实应用
- CSV文件存储
- JSON文件存储
- 数据统计分析
- MySQL数据库存储(配置模板)
python run_demo.py
# 安装依赖
pip install -r requirements.txt
# 运行特定爬虫
scrapy crawl demo
scrapy crawl quotes
scrapy crawl game_4399
运行后会生成以下文件:
game_data.csv
: 游戏数据CSV文件scraped_data.json
: JSON格式数据文件statistics.json
: 爬取统计信息
ROBOTSTXT_OBEY = False
: 忽略robots.txtDOWNLOAD_DELAY = 1
: 下载延迟1秒CONCURRENT_REQUESTS = 16
: 并发请求数ITEM_PIPELINES
: 管道配置和优先级
- 数字越小优先级越高
- 高优先级管道先处理数据
- 可配置多个管道同时工作
- Scrapy架构理解: 五大组件协同工作
- 数据流向: Request → Response → Item → Pipeline
- XPath/CSS选择器: 数据提取技术
- Item规范: 结构化数据定义
- Pipeline设计: 数据处理和存储
- 配置管理: settings.py统一配置
- 实际爬取时请遵守网站robots.txt
- 建议设置合理的下载延迟
- 大规模爬取时注意IP限制和反爬措施
- 支持多种数据存储格式
- 可配置的管道优先级
- 完整的错误处理机制
- 数据统计和分析功能