• 七月在线爬虫班学习笔记(八)——分布式爬虫框架设计


    第八课主要内容:

    • 分布式爬虫框架简介(控制模式与自由模式)
    • 消息队列
    • Redis介绍操作及队列应用
    • Scrapy-Redis介绍及项目实战

    这节课主要是代码的讲解,并且讲解了scrapy-redis部分的源码;最后给出了一个爬虫代码实例。关于scrapy-redis的代码大家自行下载学习即可。

     

     

    操作redis实例:

    import redis
    
    r = redis.Redis(host = 'localhost', port = 6379, db = 1)
    r.set('k1', 'v1')
    r.set('k2', 'v2')
    print(r.get('k1'))
    print(r.keys())
    print(r.dbsize())
    r.delete('k2')
    print(r.keys())
    print(r.dbsize())
    print(dir(r))
    
    #pipeline
    p = r.pipeline()
    p.set('k3', 'v3')
    p.set('k4', 'v4')
    p.incr('num')
    p.incr('num')
    p.execute()
    print(r.get('num'))
    
    import redis
    
    class Task:
        def __init__(self):
            self.rcon = redis.Redis(host = 'localhost', db = 5)
            self.queue = 'task:prodcons:queue'
    
        def process_task(self):
            while True:
                task = self.rcon.blpop(self.queue, 0)[1]
                print('Task: ', task)
    
    Task().process_task()
    
    import redis
    
    class Task:
        def __init__(self):
            self.rcon = redis.Redis(host = 'localhost', db = 5)
            self.ps = self.rcon.pubsub()
            self.ps.subscribe('task:pubsub:channel')
    
        def process_task(self):
            for i in self.ps.listen():
                if i['type'] == 'message':
                    print('Task: ', i['data'])
    
    Task().process_task()
    
    情不知所起一往而深
  • 相关阅读:
    增删改查(Statement接口、PreparedStatement接口、DBUtils(QueryRunner类))
    JDBC(获取数据库连接、自定义JDBC工具类)
    Mysql(视图)
    mysql:dml(元组的插入、删除、修改)
    C++ 指针和引用
    C++ 内存管理
    C++ new/malloc、delete/free
    C++ 内存对齐
    图形渲染原理
    C++获取单链表的倒数第k个节点
  • 原文地址:https://www.cnblogs.com/xingbiaoblog/p/9036747.html
Copyright © 2020-2023  润新知