1.pycurl.Curl() 类实现创建一个 libcurl 包的 Curl 句柄对象无参数。更多关于 libcurl 包的
介绍见 http://curl.haxx.se/libcurl/c/libcurl-tutorial.html。下面介绍 Curl 对象几个常用的方法。
close() 方法对应 libcurl 包中的 curl_easy_cleanup 方法无参数实现关闭、回收
Curl 对象。
perform() 方法对应 libcurl 包中的 curl_easy_perform 方法无参数实现 Curl 对象
请求的提交。
setopt(option, value) 方法对应 libcurl 包中的 curl_easy_setopt 方法参数 option 是通
libcurl 的常量来指定的参数 value 的值会依赖 option可以是一个字符串、整型、
长整型、文件对象、列表或函数等。下面列举常用的常量列表
c = pycurl.Curl() # 创建一个 curl 对象
c.setopt(pycurl.CONNECTTIMEOUT, 5) # 连接的等待时间设置为 0 则不等待
c.setopt(pycurl.TIMEOUT, 5) # 请求超时时间
c.setopt(pycurl.NOPROGRESS, 0) # 是否屏蔽下载进度条非 0 则屏蔽
c.setopt(pycurl.MAXREDIRS, 5) # 指定 HTTP 重定向的最大数
c.setopt(pycurl.FORBID_REUSE, 1) # 完成交互后强制断开连接不重用
c.setopt(pycurl.FRESH_CONNECT,1) # 强制获取新的连接即替代缓存中的连接
c.setopt(pycurl.DNS_CACHE_TIMEOUT,60) # 设置保存 DNS 信息的时间默认为 120
c.setopt(pycurl.URL,"http://www.baidu.com") # 指定请求的 URL
c.setopt(pycurl.USERAGENT,"Mozilla/5.2 (compatible; MSIE 6.0; Windows NT 5.1;
c.setopt(pycurl.HEADERFUNCTION, getheader) # 将返回的 HTTP HEADER 定向到回调函数 getheader

c.setopt(pycurl.WRITEFUNCTION, getbody) # 将返回的内容定向到回调函数 getbody
c.setopt(pycurl.WRITEHEADER, fileobj) # 将返回的 HTTP HEADER 定向到 fileobj 文件对象
c.setopt(pycurl.WRITEDATA, fileobj) # 将返回的 HTML 内容定向到 fileobj 文件对象


getinfo(option) 方法对应 libcurl 包中的 curl_easy_getinfo 方法参数 option 是通过
libcurl 的常量来指定的。下面列举常用的常量列表
c = pycurl.Curl() # 创建一个 curl 对象
c.getinfo(pycurl.HTTP_CODE) # 返回的 HTTP 状态码
c.getinfo(pycurl.TOTAL_TIME) # 传输结束所消耗的总时间
c.getinfo(pycurl.NAMELOOKUP_TIME) #DNS 解析所消耗的时间
c.getinfo(pycurl.CONNECT_TIME) # 建立连接所消耗的时间
c.getinfo(pycurl.PRETRANSFER_TIME) # 从建立连接到准备传输所消耗的时间
c.getinfo(pycurl.STARTTRANSFER_TIME) # 从建立连接到传输开始消耗的时间
c.getinfo(pycurl.REDIRECT_TIME) # 重定向所消耗的时间
c.getinfo(pycurl.SIZE_UPLOAD) # 上传数据包大小
c.getinfo(pycurl.SIZE_DOWNLOAD) # 下载数据包大小
c.getinfo(pycurl.SPEED_DOWNLOAD) # 平均下载速度
c.getinfo(pycurl.SPEED_UPLOAD) # 平均上传速度
c.getinfo(pycurl.HEADER_SIZE) #HTTP 头部大小

2.

#!/usr/bin/python

# -*- coding: utf-8 -*-


import sys

import pycurl

import time

import os,sys


URL = "www.baidu.com"

c = pycurl.Curl()

c.setopt(pycurl.URL,URL)

c.setopt(pycurl.CONNECTTIMEOUT, 30)

c.setopt(pycurl.TIMEOUT, 30)

c.setopt(pycurl.NOPROGRESS, 1)

c.setopt(pycurl.FORBID_REUSE, 1)

c.setopt(pycurl.MAXREDIRS, 1)

c.setopt(pycurl.DNS_CACHE_TIMEOUT, 30)


indexfile = open(os.path.dirname(os.path.realpath(__file__))+"/content.txt","wb")

c.setopt(pycurl.WRITEHEADER, indexfile)

c.setopt(pycurl.WRITEDATA, indexfile)

try:

    c.perform()

except Exception,e:

    print "commection error:" +str(e)

    indexfile.close()

    c.close()

    sys.exit()


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"  %(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)

# 关闭文件及 Curl 对象

indexfile.close()

c.close()


生成content.txt的文本

python 自动化运维 监测web质量


3.原本自动化运维里使用的是www.google.com.hk的URL但是出现commection error:(7, 'Failed to connect to www.google.com.hk port 80: Timed out')

就把URL改成URL = "www.baidu.com"就可以正常用了