py 协程(3)

# -*- encoding: utf-8 -*-
'''
py 3.6
sumlime
'''

import time
import aiohttp
import asyncio
import functools
from bs4 import BeautifulSoup

now = lambda: time.perf_counter()

async def fetchHtmlText(url):
    async with aiohttp.ClientSession(
        headers={'users-agent':'Mozilla/5.0'}, 
        connector=aiohttp.TCPConnector(ssl=False)) as session:
        async with session.get(url) as response:
            return await response.text()

def printInfo(n, future):
    print(n, future.result())
    # with open('', 'wb') as f:
    #     f.write(content)

async def main():
    url = "https://movie.douban.com/cinema/later/beijing/"
    html = await fetchHtmlText(url)
    soup = BeautifulSoup(html, "html.parser")

    divs = soup.find_all('div', class_='item mod')
    urls = tuple(map(lambda x: x.a.img['src'], divs))
    names = tuple(map(lambda x: x.h3.a.string, divs))
    dats = tuple(map(lambda x: x.ul.li.string, divs))

    lis = zip(names, dats, urls)
    for i in lis:
        print("{0:{3}^25} \t {1:{3}^10} \t {2:{3}^}".format(i[0], i[1], i[2],chr(12288)))
    return urls, names, dats




start = now()
loop = asyncio.get_event_loop()
task = loop.create_task(main())
task.add_done_callback(functools.partial(printInfo, 1))
try:
    loop.run_until_complete(task)
    print("Wall time: {:.2f}".format(now() - start))
finally:
    loop.close()
#           九龙不败                 07月02日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2560169035.jpg
#            别岁                  07月02日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2558138041.jpg
#          爱宠大机密2                07月05日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2555923582.jpg
#        猪猪侠·不可思议的世界             07月05日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2560664101.jpg
#            狮子王                 07月12日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2559658750.jpg
#      宝莱坞机器人2.0:重生归来            07月12日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2558657891.jpg
#         机动战士高达NT               07月12日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2558661806.jpg
#           嘿,蠢贼                 07月16日        https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2560832388.jpg
#           小小的愿望                07月18日        https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2560659129.jpg
#          猪八戒·传说                07月19日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2559590242.jpg
#           为家而战                 07月19日        https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2559337905.jpg
# 1 (('https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2560169035.jpg', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2558138041.jpg', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2555923582.jpg', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2560664101.jpg', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2559658750.jpg', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2558657891.jpg', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2558661806.jpg', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2560832388.jpg', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2560659129.jpg', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2559590242.jpg', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2559337905.jpg'), ('九龙不败', '别岁', '爱宠大机密2', '猪猪侠·不可思议的世界', '狮子王', '宝莱坞机器人2.0:重生归来', '机动战士高达NT', '嘿,蠢贼', '小小的愿望', '猪八戒·传说', '为家而战'), ('07月02日', '07月02日', '07月05日', '07月05日', '07月12日', '07月12日', '07月12日', '07月16日', '07月18日', '07月19日', '07月19日'))
# Wall time: 2.09
# [Finished in 3.7s]

参考

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值