在当今数据驱动的时代,网络爬虫已成为获取信息的重要工具,而 Scrapy 作为 Python 中最强大、最灵活的爬虫框架之一,广泛应用于电商监测、舆情分析、内容聚合等领域。本文将从框架结构出发,系统介绍 Scrapy 的核心模块与使用方法,帮助你掌握构建高效、可扩展爬虫系统的关键技能。无论你是爬虫初学者还是工程实践者,这将是一次深入 Scrapy 内部机制的全面探索。
目录
6. Downloader Middlewares(下载中间件)
14. 分布式扩展(如 Scrapyd / Frontera / Redis)
1. Scrapy 项目结构模块
当你使用 scrapy startproject myproject 创建 Scrapy 项目后,它会自动生成如下结构:
myproject/
├── scrapy.cfg # 配置文件(入口配置)
└── myproject/ # 主模块
├── __init__.py
├── items.py # 定义抓取字段结构
├── middlewares.py # 中间件:请求与响应处理
├── pipelines.py # 数据处理/清洗/存储
├── settings.py # 全局配置
└── spiders/ # 爬虫目录(存放各个爬虫)
└── example_spider.py
每个模块都承载着独立职责,方便组织大型项目。
2. Spiders(爬虫类)
爬虫类是 Scrapy 的核心,用于定义数据采集逻辑:
import scrapy
class MySpider(scrapy.Spider):
name = 'example'
start_urls = ['https://example.com']
def parse(self, response):
title = response.css('title::text').get()
yield {'title': title}
关键点:
-
name:爬虫唯一标识 -
start_urls:起始 URL 列表 -
parse():默认的回调函数,用于解析响应
你也可以自定义多个解析函数,并通过 meta 传递数据。
3. Items(数据模型)
定义结构化数据字段,类似 Django 的 Model:
import scrapy
class MyItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
date = scrapy.Field()
优势:
-
数据结构清晰
-
支持类型转换与验证(可结合
ItemLoader)
4. Settings(配置模块)
settings.py 控制 Scrapy 项目的全局行为:
常用配置:
BOT_NAME = 'mybot'
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 1
USER_AGENT = 'Mozilla/5.0'
ITEM_PIPELINES = {
'myproject.pipelines.MongoPipeline': 300,
}
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'myproject.middlewares.RandomUserAgentMiddleware': 400,
}

最低0.47元/天 解锁文章
6710





