python pipeline框架_python爬虫Scrapy 框架 - Pipeline

1. Item Pipeline 介绍

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

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

item pipeline的主要作用:清理html数据

验证爬取的数据

去重并丢弃

讲爬取的结果保存到数据库中或文件中

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

注意:

写到pipeline后,要在settings中设置才可生效

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值