items功能
约 583 字大约 2 分钟
2025-01-14
介绍
Items 是框架中的数据结构,用于定义爬取的 数据模型
。每个爬虫会通过 items
来存储从网页提取的字段数据,并将其交给管道(Pipeline)进行后续处理。items
模块的设计确保了数据结构的 统一性
和 可扩展性
。
主要功能
定义数据结构
:通过继承基类定义字段,并指定类型和验证规则,确保数据格式符合预期。数据存储
:爬取的数据封装成 item 对象,传递给管道进行后续处理(如清洗、存储、导出)。支持多种数据类型
:支持字符串、数字、列表、字典等类型,灵活定义数据结构。扩展性
:通过继承和修改 Item 类,可以轻松扩展数据结构以适应不同任务需求。
处理流程
定义 Item 类
:开发者通过继承框架的 Item 基类,定义需要爬取的数据字段。填充数据
:在爬虫的回调函数中,提取到的数据将填充到 Item 对象中。数据传递与处理
:填充完成的数据会传递到管道中,进行数据存储或其他处理。输出结果
:最终,处理完的数据会存储到数据库、文件或其他地方,供后续使用。
使用示例
items.py
from hunterx.items.baseitem import Item, dataclass, field
@dataclass
class FirstSpiderItem(Item):
title: str = field(default="")
number: int = field(default=0)
first_spider.py
# -*- coding: utf-8 -*-
import hunterx
from hunterx.spiders import MemorySpider
from items import FirstSpiderItem
class FirstSpiderSpider(MemorySpider):
name = 'first_spider'
def __init__(self):
self.header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
def start_requests(self):
url = 'https://www.example.com/'
yield hunterx.Requests(url=url, headers=self.header, callback=self.parse, level=1)
async def parse(self, response):
item = FirstSpiderItem()
item.title = 'title_example'
item.number = 10
yield item
if __name__ == '__main__':
start_run = FirstSpiderSpider()
start_run.run()
按照上面的使用方式即可完成对item的值的传递,便于后续pipeline的进一步数据处理使用
总结
Items 模块是框架的核心组件之一,用于定义和存储爬取的数据。它使得数据处理更加清晰和结构化,便于后续操作(如数据存储、清洗等)。通过继承 Item 类和使用 Field,你可以灵活定义各种爬取数据的格式和内容。