pycurl是用c语言编写的libcurl python实现,支持的操作协议有FTP、HTTP、https、telnet等。很多情况用于探测web的服务质量,比如响应的HTTP状态码,请求延时,http头信息,下载速度等。
1、安装
下载安装包:wget http://curl.haxx.se/download/curl-7.36.0.tar.gz
解压:tar -zxvf curl-7.36.0.tar.gz
cd curl-7.36.0
./configure
make && make install
export LD_LIBRARY_PATH=/usr/local/lib
wget https://pypi.python.org/packages/source/p/pycurl/pycurl-7.19.3.1.tar.gz --no-check-certificate
tar -zxvf pycurl-7.19.3.1.tar.gz
cd pycurl-7.19.3.1
python setup.py install --curl-config=/usr/local/bin/curl-config
校验安装结果:
案例
探测一个网页的访问质量
# -*- coding: utf-8 -*-
#目的是探测网页质量
import os,sys
import time
import pycurl
URL="www.google.com.hk"
c = pycurl.curl()
c.setopt(pycurl.URL,URL)
c.setopt(pycurl.CONNECTTIMEOUT,5)
c.setopt(pycurl.NOPRGRESS,1)
c.setopt(pycurl.FORBID_REUSE,1)
c.setopt(pycurl.MAXREDIRS,1)
c.setopt(pycurl.DSN_CACHE_TIMEOUT,30)
indexfile = open(os.path.dirname(os.path.realpath(__file__))+"/content.txt","web")
c.setopt(pycurl.WRITEHEADER,indexfile)
try:
c.perform()
except Exception,e:
print "connecion 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 "1:%s"%(HTTP_CODE)
print "2:%.2f ms"%(NAMELOOKUP_TIME*1000)
print "2:%.2f ms"%(CONNECT_TIME*1000)
print "2:%.2f ms"%(PRETRANSFER_TIME*1000)
print "2:%.2f ms"%(STARTTRANSFER_TIME*1000)
print "2:%.2f ms"%(TOTAL_TIME*1000)
indexfile.close()
c.close()
~