标签:
#!/usr/bin/env python # -*- coding:utf-8 -* from __future__ import print_function import pycurl import re import sys try: from io import BytesIO except ImportError: from StringIO import StringIO as ByteIO headers = {} def header_function(header_line): header_line = header_line.decode(‘iso-8859-1‘) if ":" not in header_line: return name, value = header_line.split(":",1) name = name.strip() value = value.strip() name = name.lower() headers[name] = value URL = ‘http://pycurl.sourceforge.net‘ buffer =BytesIO() c = pycurl.Curl() c.setopt(c.URL,URL) c.setopt(c.WRITEFUNCTION,buffer.write) c.setopt(c.HEADERFUNCTION, header_function) try: c.perform() except Exception,e: print("connection error:" + str(e)) buffer.close() c.close() sys.exit() encoding = None if ‘content-type‘ in headers: content_type = headers[‘content-type‘].lower() match = re.search(‘charset=(\S+)‘, content_type) if match: encoding = match.group(1) print(‘Decoding using %s‘ %encoding) if encoding is None: encoding = ‘iso-8859-1‘ print(‘Assuming encoding is %s‘ % encoding) body = buffer.getvalue() HTTP_CODE = c.getinfo(c.HTTP_CODE) NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME) CONNECT_TIME = c.getinfo(c.CONNECT_TIME) PRETRANSFER_TIME = c.getinfo(c.PRETRANSFER_TIME) STARTTARNSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME) TOTAL_TIME = c.getinfo(c.TOTAL_TIME) SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD) HEADER_SIZE = c.getinfo(c.HEADER_SIZE) SPEED_DOWNLOAD = c.getinfo(c.SPEED_DOWNLOAD) print("HTTP状态码:%s" % HTTP_CODE) print("DNS解析时间:%.3f ms" %(NAMELOOKUP_TIME*1000)) print("建立连接时间:%.3f ms" %(CONNECT_TIME*1000)) print("准备传输时间:%.3f ms" %(PRETRANSFER_TIME*1000)) print("传输开始时间:%.3f ms" %(STARTTARNSFER_TIME*1000)) print("传输结束总时间:%.3f ms" %(TOTAL_TIME*1000)) print("下载数据包大小:%d bytes/s" % SIZE_DOWNLOAD) print("HTTP头部大小:%d byte" %HEADER_SIZE) print("平均下载速度:%d bytes/s" % SPEED_DOWNLOAD) buffer.close() c.close()
标签:
原文地址:http://www.cnblogs.com/jachin/p/4534678.html