zoukankan      html  css  js  c++  java
  • scrapy-pipeline,mysql

    scrapy中多个pipeline作用:

    一个项目可能需要爬取多个网站,根据每个网站的数据量(处理方式)不同,可创建多个管道 pipeline

    class SpideranythingPipeline(object):
        def process_item(self, item, spider):
            if spider.name == 'itcast':  # spider为爬虫实例  itcast是爬虫的名字,, 由此可区分多个爬虫
                print(item)
                return item

    pipeline的方法

    mysql

    class SpiderSuningBookPipeline(object):
        def process_item(self, item, spider):
            # collection.insert(dict(item))
            sql = """
                insert into book(title,author,download_text,new) values('%s','%s','%s','%s')"""
                  %(
                item['title'],
                item['author'],
                item['download_text'],
                item['new']
    )
            print(sql)
            self.cursor.execute(sql)
            return item
    
        def open_spider(self, spider):
            # 连接数据库
            self.connect = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            db='study',
            user='root',
            passwd='123456',
            charset='utf8',
            use_unicode=True)
    
            # 通过cursor执行增删查改
            self.cursor = self.connect.cursor()
            self.connect.autocommit(True)
    
        def close_spider(self, spider):
            self.cursor.close()
            self.connect.close()

    mongodb

    from pymongo import MongoClient
    
    
    class PracticePipeline(object):
        def process_item(self, item, spider):
            ''' 接受爬虫返回的数据 '''
            pass
    
        def open_spider(self, spider):
            ''' 爬虫启动的时候调用 '''
            spider.hello = 'world' # 可以给spider添加属性
            # 初始化数据库连接
            client = MongoClient()
            spider.collection = client['SpiderAnything']['hr']
    
        def close_spider(self, spider):
            ''' 爬虫关闭的时候调用 '''
            pass
  • 相关阅读:
    一个极好的ALV例子
    ABAP中读取文本文件(TXT DOCUMENT)并用ALV显示
    SMARTFORM报表程序设计(3)
    FOR ALL ENTRIES IN
    SMARTFORM报表程序设计(2)
    SMARTFORM报表程序设计(1)
    ABAP用FILE_OPEN_DIALOG打开多个文件后打印出名称
    LaTeX 表格的处理 [转]
    ubuntu安装deb,rpm安装包,tar.gz的方法 [转]
    OpenGL学习入门之VS2010环境配置 [转]
  • 原文地址:https://www.cnblogs.com/tangpg/p/10683670.html
Copyright © 2011-2022 走看看