在Scrapy框架中,items.py、middlewares.py、pipelines.py和settings.py
都是用于实现不同功能的重要模块。以下是它们的作用和一些常见示例:
items.py
items.py 文件定义了你的项目中需要提取的数据的数据结构。每个爬虫项目都可以定义一个或多个Item类,每个Item类都表示一种数据结构。
示例:
# items.py
import scrapy
class MyScrapyItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
description = scrapy.Field()
middlewares.py
middlewares.py 文件包含了Scrapy框架的中间件,它是处理Scrapy请求和响应的钩子机制。中间件可以用于修改请求、修改响应、设置代理等操作。
# middlewares.py
class MyCustomMiddleware:
def process_request(self, request, spider):
# 在发送请求之前的处理逻辑
pass
def process_response(self, request, response, spider):
# 在处理响应之后的处理逻辑
pass
pipelines.py
pipelines.py 文件定义了用于处理Item的管道。每个Item在被爬虫产生后都会被送到该管道进行处理。管道可以进行数据清理、持久化存储等操作。
# pipelines.py
class MyScrapyPipeline:
def process_item(self, item, spider):
# 处理Item的逻辑
return item
settings.py
settings.py 文件包含了Scrapy项目的全局配置信息。你可以在这里设置下载延迟、中间件、管道等。
# settings.py
BOT_NAME = 'my_scrapy_project'
SPIDER_MODULES = ['my_scrapy_project.spiders']
NEWSPIDER_MODULE = 'my_scrapy_project.spiders'
ROBOTSTXT_OBEY = True
# 设置下载延迟
DOWNLOAD_DELAY = 2
# 启用自定义中间件
DOWNLOADER_MIDDLEWARES = {
'my_scrapy_project.middlewares.MyCustomMiddleware': 543,
}
# 启用自定义管道
ITEM_PIPELINES = {
'my_scrapy_project.pipelines.MyScrapyPipeline': 300,
}