原文转载于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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。