对item pipelines作用的介绍和补充

本文深入探讨了Scrapy框架中的ItemPipeline组件,讲解了其在数据处理中的关键作用,包括数据清洗、验证、去重及存储。同时,提供了编写自定义ItemPipeline的详细步骤,并演示了如何将数据保存为JSON文件及写入MongoDB数据库。

1. Item Pipeline 介绍

当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理

每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或者被丢弃而不再进行处理

item pipeline的主要作用

 

  1. 清理html数据
  2. 验证爬取的数据
  3. 去重并丢弃
  4. 讲爬取的结果保存到数据库中或文件中

 

2. 编写自己的item pipeline

2.1 必须实现的函数

  • process_item(self,item,spider)

每个item piple组件是一个独立的pyhton类,必须实现以process_item(self,item,spider)方法

每个item pipeline组件都需要调用该方法,这个方法必须返回一个具有数据的dict,或者item对象,或者抛出DropItem异常,被丢弃的item将不会被之后的pipeline组件所处理

 

2.2 可以选择实现

  • open_spider(self,spider) 表示当spider被开启的时候调用这个方法
  • close_spider(self,spider) 当spider关闭时候这个方法被调用

 

2.3 应用到项目

import json

class MoviePipeline(object):
    def process_item(self, item, spider):
        json.dump(dict(item), open('diban.json', 'a', encoding='utf-8'), ensure_ascii=False)
        return item

注意:

ITEM_PIPELINES = { 'spiderdemo1.pipelines.MoviePipeline': 300 }

2.4 将项目写入MongoDB

MongoDB地址和数据库名称在Scrapy设置中指定; MongoDB集合以item类命名

from pymongo import MongoClient
from middle.settings import HOST
from middle.settings import PORT
from middle.settings import DB_NAME
from middle.settings import SHEET_NAME


class MiddlePipeline(object):
    def __init__(self):
        client = MongoClient(host=HOST, port=PORT)
        my_db = client[DB_NAME]
        self.sheet = my_db[SHEET_NAME]

    def process_item(self, item, spider):
        self.sheet.insert(dict(item))
        return item

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值