# -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/8/13 22:13 # pip3 install pycurl import pycurl from io import BytesIO def test_website(url): c = pycurl.Curl() buffer = BytesIO() # 創建緩存對象 c.setopt(c.WRITEDATA, buffer) # 設置資源數據寫入到緩存對象 c.setopt(c.URL, url) # 指定請求的URL c.setopt(c.MAXREDIRS, 5) # 指定HTTP重定向的最大數 c.perform() # 執行 http_code = c.getinfo(pycurl.HTTP_CODE) # 返回的HTTP狀態碼 dns_resolve = c.getinfo(pycurl.NAMELOOKUP_TIME) # DNS解析所消耗的時間 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_size_upload = c.getinfo(pycurl.SIZE_UPLOAD) # 上傳數據包大小 http_header_size = c.getinfo(pycurl.HEADER_SIZE) # HTTP頭部大小 http_speed_downlaod = c.getinfo(pycurl.SPEED_DOWNLOAD) # 平均下載速度 http_speed_upload = c.getinfo(pycurl.SPEED_UPLOAD) # 平均上傳速度 http_redirect_time = c.getinfo(pycurl.REDIRECT_TIME) # 重定向所消耗的時間 print('HTTP響應狀態: %d' % http_code) print('DNS解析時間:%.2f ms' % (dns_resolve * 1000)) print('建立連接時間: %.2f ms' % (http_conn_time * 1000)) print('准備傳輸時間: %.2f ms' % (http_pre_trans * 1000)) print("傳輸開始時間: %.2f ms" % (http_start_trans * 1000)) print("傳輸結束時間: %.2f ms" % (http_total_time * 1000)) print("重定向時間: %.2f ms" % (http_redirect_time * 1000)) print("上傳數據包大小: %d bytes/s" % http_size_upload) print("下載數據包大小: %d bytes/s" % http_size_download) print("HTTP頭大小: %d bytes/s" % http_header_size) print("平均上傳速度: %d k/s" % (http_speed_upload / 1024)) print("平均下載速度: %d k/s" % (http_speed_downlaod / 1024)) if __name__ == '__main__': test_url = 'www.baidu.com' test_website(test_url)