网络爬虫(十二)

作者: zhangxiaohao | 来源:发表于2019-05-21 05:50 被阅读0次

    爬虫用到协程的内容

    • coroutine:协程对象,用async关键字定义一个方法,就返回一个协程对象。下面的c就是一个协程对象,它不会立即执行。
    async def coroutin_obj(url):
        print(url)
    c=coroutin_obj('http://www.test.com')
    
    • get_event_loop()建立事件循环对象。
    loop=asyncio.get_event_loop()
    
    • task:对协程对象进行封装,包含任务各种状态,用法如下:
    import asyncio
    async def coroutin_obj(url):
        print(url)
    c=coroutin_obj('http://www.test.com')
    loop=asyncio.get_event_loop()
    task= loop.create_task(c)#c是上面建立的协程对象。
    loop.run_until_complete(task)#执行任务
    
    
    • future:与task相似,代码如下:
    import asyncio
    
    async def coroutin_obj(url):
        print(url)
    
    c=coroutin_obj('http://www.test.com')
    loop=asyncio.get_event_loop()
    fu= asyncio.ensure_future(c)
    loop.run_until_complete(fu)
    
    • 绑定回调,代码如下:
    import asyncio
    async def coroutin_obj(url):
        print(url)
        return 'ok'
    def call_back(future):
        print('调用完成',future.result())
        return True
    c=coroutin_obj('http://www.test.com')
    loop=asyncio.get_event_loop()
    fu= asyncio.ensure_future(c)
    fu.add_done_callback(call_back)# 绑定回调
    loop.run_until_complete(fu)
    
    运行结果

    相关文章

      网友评论

        本文标题:网络爬虫(十二)

        本文链接:https://www.haomeiwen.com/subject/kbpxzqtx.html