100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 11 单线程+多任务异步协程 爬虫

11 单线程+多任务异步协程 爬虫

时间:2023-11-07 22:45:10

相关推荐

11 单线程+多任务异步协程 爬虫

#

from lxml import etreeimport asyncioimport aiohttpimport timedef callback(task): # 回调函数page = task.result()tree = etree.HTML(page)name = tree.xpath('/html/body/div[3]/div[4]/ul/li/a/span[2]/p[1]/text()')print(name)# print('I am callback', task.result()) #接收task的returnasync def get_page(url): # async with aiohttp.ClientSession() as session:async with await session.get(url=url) as response:page_text = await response.text() # read() 二进制形式的响应数据,json()return page_text# print('响应数据:',page_text)# print('ok %s'%url)start = time.time()urls = ['/vod/type/id/1.html','/vod/type/id/2.html','/vod/type/id/3.html',]tasks = [] #任务列表 放置多个任务对象loop = asyncio.get_event_loop()for url in urls:c = get_page(url)task = asyncio.ensure_future(c)tasks.append(task)task.add_done_callback(callback) # 添加要执行的回调函数loop.run_until_complete(asyncio.wait(tasks))print('总耗时',time.time()-start)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。