zoukankan      html  css  js  c++  java
  • python 异步请求

    这是循环请求10次页面。总时间大概是10秒左右,如果是普通的循环请求10次页面而不添加异步的话,时间大概在30秒以上,当然这个数据可能有误,因为有网速的问题存在,但大体的效果应该是不变的。

      

    import aiohttp
    from bs4 import BeautifulSoup
    import asyncio
    import time
    
    
    async def html_list(url,headers):
        try:
            async with aiohttp.ClientSession() as session:
                async with session.get(url, headers=headers, timeout=10) as response:
                    if response.status != 200:
                        print('请求失败:{}'.format(response.status))
                        return await html_list(url, headers)  # 返回状态码不是200,将挂起协程并执行其他协程
                    else:
                        response.encoding = 'gbk'
                        return await response.text()  # 挂起协程执行其他协程,当其他协程完成或者挂起时,继续执行此协程
        except Exception as e:
            print(e)
    
    
    async def html_detail(html):
        html1 = BeautifulSoup(html,'lxml')
        html2 = html1.select('.tit')
        for i in html2:
            print(i.get_text())
    
    
    def html_index(url,headers):
        for i in range(10):
            loop = asyncio.get_event_loop()  # 调用协程
            html = loop.run_until_complete(html_list(url,headers))  # 启动第一个协程
            loop.run_until_complete(html_detail(html))  # 启动第二个协程
    
    
    def main():
        url = 'http://www.meizitu.com/a/pure.html'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3393.4 Safari/537.36',
        }
        loop = asyncio.new_event_loop()  # 创建一个协程
        html_index(url,headers)
        asyncio.set_event_loop(loop)  # 设置协程添加到事件循环中
    
    
    if __name__ == '__main__':
        a = time.time()
        main()
        b = time.time()
        print(b-a)
  • 相关阅读:
    spring的好处
    2.3 java中类路径
    java的编译器为什么会自动编译java文件
    oracle添加字段或者删除字段-转载
    sql 取新的列名含义
    window.onload =writeMessage(); 与window.onload =writeMessage;的区别
    HTML DOM 之<textare>标签
    最新学习网址大全
    C#读写txt文件的两种方法介绍
    固定分隔符字符串与数组互转及ArrayList与数组(Array)互转
  • 原文地址:https://www.cnblogs.com/zft710/p/9322037.html
Copyright © 2011-2022 走看看