一个curl命令的python写法
黄舟
黄舟 2017-04-17 17:14:19
[Python讨论组]

获取响应数据,状态码,dns解析时间,连接时间,总请求时间,curl命令可以这样写:

[root@localhost ~]# echo -n '{"data":';curl -s 'http://apis.haoservice.com/weather' -w ', "http_code":%{http_code}, "dns":%{time_namelookup}, "connect":%{time_connect}, "total":%{time_total}}'
{"data":{"error_code":10001,"reason":"错误的请求KEY","result":null}, "http_code":200, "dns":0.050, "connect":0.079, "total":0.150}

用python如何实现类似功能?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
怪我咯

使用 pycurl
先 pip install pycurl
然后执行以下脚本即可,兼容 Python 2.7 和 Python 3

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os,sys
import time
import sys
import pycurl

class joincontents:
    def __init__(self):
        self.contents = ''
    def callback(self,curl):
        self.contents = self.contents + curl.decode('utf-8')

def curlurl(url):
    t = joincontents()
    c = pycurl.Curl()
    c.setopt(pycurl.WRITEFUNCTION,t.callback)
    c.setopt(pycurl.ENCODING, 'gzip')
    c.setopt(pycurl.URL,url)
    c.perform()
    NAMELOOKUP_TIME =  c.getinfo(c.NAMELOOKUP_TIME)
    CONNECT_TIME =  c.getinfo(c.CONNECT_TIME)
    PRETRANSFER_TIME =   c.getinfo(c.PRETRANSFER_TIME)
    STARTTRANSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME)
    TOTAL_TIME = c.getinfo(c.TOTAL_TIME)
    HTTP_CODE =  c.getinfo(c.HTTP_CODE)
    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解析时间:%.2f ms"%(NAMELOOKUP_TIME*1000))
    print("建立连接时间:%.2f ms" %(CONNECT_TIME*1000))
    print("准备传输时间:%.2f ms" %(PRETRANSFER_TIME*1000))
    print("传输开始时间:%.2f ms" %(STARTTRANSFER_TIME*1000))
    print("传输结束总时间:%.2f ms" %(TOTAL_TIME*1000))
    print("下载数据包大小:%d bytes/s" %(SIZE_DOWNLOAD))
    print("HTTP头部大小:%d byte" %(HEADER_SIZE))
    print("平均下载速度:%d bytes/s" %(SPEED_DOWNLOAD))

if __name__ == '__main__':
    url = sys.argv[1]
    curlurl(url)
高洛峰

Subprocess.Popen('curl ...')

巴扎黑

requests模块

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号