博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各种爬虫管道
阅读量:4514 次
发布时间:2019-06-08

本文共 1655 字,大约阅读时间需要 5 分钟。

from datetime import datetime

from scrapy.exporters import JsonItemExporter, CsvItemExporter
import pymongo
import redis
from .settings import REDIS_HOST, REDIS_PORT, MONGO_HOST, MONGO_PORT
# 数据源的管道
class AqiDataPipeline(object):
    def process_item(self, item, spider):
        # 记录爬取时间
        item['crawl_time'] = datetime.utcnow()
        # 记录爬虫
        item['spider'] = spider.name
        return item
# Json的管道
class AqiJsonPipeline(object):
    def open_spider(self, spider):
        self.file = open("aqi.json", 'wb')
        self.write = JsonItemExporter(self.file)
        self.write.start_exporting()
    def process_item(self, item, spider):
        self.write.export_item(item)
        return item
    def close_spider(self, spider):
        self.write.finish_exporting()
        self.file.close()
# Csv的管道
class AqiVscPipeline(object):
    def open_spider(self, spider):
        self.file = open("aqi.csv", 'wb')
        self.write = CsvItemExporter(self.file)
        self.write.start_exporting()
    def process_item(self, item, spider):
        self.write.export_item(item)
        return item
    def close_spider(self, spider):
        self.write.finish_exporting()
        self.file.close()
# mongodb数据库管道
class AqiMongoPipeline(object):
    def open_spider(self, spider):
        self.client = pymongo.MongoClient(host=MONGO_HOST, port=MONGO_PORT)
        self.db = self.client['Aqi']
        self.collection = self.db['aqi']
    def process_item(self, item, spider):
        self.collection.insert(dict(item))
        return item
    def close_spider(self, spider):
        self.client.close()
# redis数据库管道
class AqiRedisPipeline(object):
    def open_spider(self, spider):
        self.client = redis.Redis(host=REDIS_HOST, port=REDIS_PORT)
    def process_item(self, item, spider):
        self.client.lpush('aqi', dict(item))
        return item

转载于:https://www.cnblogs.com/hanjian200ok/p/9526028.html

你可能感兴趣的文章
HTTP报文(面试会问开发时常用的报文头格式)
查看>>
机器学习从业人员到底做什么?
查看>>
word发表博客的方法
查看>>
Programming Erlang_CHAPTER2_Basic Erlang 学习笔记(2)。
查看>>
Linux基础
查看>>
【模板】高精度
查看>>
弱弱的玩下Javascript
查看>>
二叉树相关操作
查看>>
在webstorm开发微信小程序之使用阿里自定义字体图标
查看>>
序列化模块/模块/包
查看>>
eclipse maven plugin 插件 安装 和 配置
查看>>
收集一些复杂有用的正则表达式
查看>>
子数组求和之大数溢出
查看>>
浏览器预览office文件(word,Excel,等)
查看>>
MySQL工具汇总
查看>>
cookie
查看>>
如何使用Eclipse编译C,C++,JAVA程序
查看>>
php小程序-文章发布系统
查看>>
从“智猪博弈”看所谓“大国责任”
查看>>
Day3:Spring-JDBC、事务管理
查看>>