测试网站页面网速的一个简单Python脚本

原文转载于https://www.cnblogs.com/kevingrace/p/5840951.html

但是直接拷贝原文的代码运行报错异常,怀疑是不同Python版本使用StringIO BytesIO导致

执行报错,直接注释了,使用下面代码可以执行出和原文一样的效果

# test_netRate.py  测试网页网速
!/usr/bin/python
 coding: UTF-8

import  pycurl,sys,os,time
from io   BytesIO

'''
class idctest:
    def __init__(self):
        self.contents = ''

    def body_callback(self,buff):
        buff = BytesIO()
        self.contents = self.contents + buff
'''
def test_gzip(input_url):
     t = idctest()
    e = BytesIO()
    c = pycurl.Curl()    创建一个同libcurl中的CURL处理器相对应的Curl对象
     c.setopt(pycurl.WRITEFUNCTION,t.body_callback)  #写的回调
    c.setopt(pycurl.WRITEFUNCTION,e.write)  写的回调

    c.setopt(pycurl.ENCODING,'gzip')   编码
    c.setopt(pycurl.URL,input_url)    设置要访问的网址 input_url = "http://www.baidu.com"
    c.setopt(pycurl.MAXREDIRS,5)   最大重定向次数,可以预防重定向陷阱
    c.perform()  执行上述访问网址的操作

    http_code = c.getinfo(pycurl.HTTP_CODE)
    dns_resolve = c.getinfo(pycurl.NAMELOOKUP_TIME)
    http_conn_time = c.getinfo(pycurl.CONNECT_TIME)
    http_pre_trans = c.getinfo(pycurl.PRETRANSFER_TIME)
    http_start_trans = c.getinfo(pycurl.STARTTRANSFER_TIME)
    http_total_time = c.getinfo(pycurl.TOTAL_TIME)
    http_size_download = c.getinfo(pycurl.SIZE_DOWNLOAD)
    http_header_size = c.getinfo(pycurl.HEADER_SIZE)
    http_speed_downlaod = c.getinfo(pycurl.SPEED_DOWNLOAD)

    print(HTTP响应状态: %d' % http_code)
    DNS解析时间:%.2f ms' % (dns_resolve * 1000))
    建立连接时间: %.2f ms' % (http_conn_time * 1000准备传输时间: %.2f ms' % (http_pre_trans * 1000"传输开始时间: %.2f ms" % (http_start_trans * 1000传输结束时间: %.2f ms" % (http_total_time * 1000下载数据包大小: %d bytes/s" % http_size_download)
    HTTP头大小: %d bytes/s http_header_size)
    平均下载速度: %d k/s" % (http_speed_downlaod / 1024))


if __name__ == __main__':
    input_url = sys.argv[1]
    test_gzip(input_url)

 

在控制台执行运行命令 python test_netRate.py http://www.sina.com

或者直接替换要输入的input_url

相关文章

Python中的函数(二) 在上一篇文章中提到了Python中函数的定...
Python中的字符串 可能大多数人在学习C语言的时候,最先接触...
Python 面向对象编程(一) 虽然Python是解释性语言,但是它...
Python面向对象编程(二) 在前面一篇文章中谈到了类的基本定...
Python中的函数(一) 接触过C语言的朋友对函数这个词肯定非...
在windows下如何快速搭建web.py开发框架 用Python进行web开发...