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