返回顶部
首页 > 资讯 > 后端开发 > Python >Python pycurl模块 学习
  • 319
分享到

Python pycurl模块 学习

模块Pythonpycurl 2023-01-31 05:01:14 319人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

pycurl模块的安装方法如下: easy_install pycurl #easy_install安装方法 pip install pycurl #pip安装方法 #源码安装方法 # 要求curl-config包支持,需要源码方式重新安



pycurl模块的安装方法如下:
easy_install pycurl #easy_install安装方法
pip install pycurl #pip安装方法

#源码安装方法
# 要求curl-config包支持,需要源码方式重新安装curl
# 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



模块常用方法说明
pycurl.Curl()
类实现创建一个libcurl包的Curl句柄对象,无参数。更多关于libcurl包的介绍见http://curl.haxx.se/libcurl/c/libcurltutorial.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,可以是一个字符串、整型、长整型、文件对象、列表或函数等。
下面列举常用的常量列表:



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; windowsNT 5.1; SV1; .net CLR 1.1.4322; .NET CLR 2.0.50324)") #配置请求HTTP头的User-Agent
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头部大小



#!/usr/bin/env python
#_*_coding:utf-8 _*_
__author__ = 'gaogd'


import os,sys
import time
import sys
import pycurl

URL="http://www.baidu.com" #探测的目标URL

c = pycurl.Curl() #创建一个Curl对象

c.setopt(pycurl.URL, URL)               #定义请求的URL常量
c.setopt(pycurl.CONNECTTIMEOUT, 5)      #定义请求连接的等待时间
c.setopt(pycurl.TIMEOUT, 5)             #定义请求超时时间
c.setopt(pycurl.NOPROGRESS, 1)          #屏蔽下载进度条
c.setopt(pycurl.FORBID_REUSE, 1)        #完成交互后强制断开连接,不重用
c.setopt(pycurl.MAXREDIRS, 1)           #指定HTTP重定向的最大数为1
c.setopt(pycurl.DNS_CACHE_TIMEOUT,30)   #设置保存DNS信息的时间为30秒


#创建一个文件对象,以”wb”方式打开,用来存储返回的http头部及页面内容
indexfile = open(os.path.dirname(os.path.realpath(__file__)) +"/content.txt", "wb")
c.setopt(pycurl.WRITEHEADER, indexfile)         #将返回的HTTP HEADER定向到indexfile文件对象
c.setopt(pycurl.WRITEDATA, indexfile)           #将返回的HTML内容定向到indexfile文件对象


try:
    #pass
    c.perform() #提交请求
except Exception as e:
    print "connecion error:"+str(e)
    indexfile.close()
    c.close()
    sys.exit()


NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME) #获取DNS解析时间
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) #获取HTTP状态码
SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD) #获取下载数据包大小
HEADER_SIZE = c.getinfo(c.HEADER_SIZE) #获取HTTP头部大小
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)
#关闭文件及Curl对象
indexfile.close()
c.close()


--结束END--

本文标题: Python pycurl模块 学习

本文链接: https://lsjlt.com/news/188725.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python学习-pycurl模块
    pycurl是一个用c语言编写的libcurl Python实现,功能非常强大,支持操作协议有FTP,HTTP,HTTPS,TELNET等。模块的常用方法说明:close()方法,对应libcurl包中的curl_easy_cleanup方...
    99+
    2023-01-31
    模块 Python pycurl
  • Python pycurl模块 学习
    pycurl模块的安装方法如下: easy_install pycurl #easy_install安装方法 pip install pycurl #pip安装方法 #源码安装方法 # 要求curl-config包支持,需要源码方式重新安...
    99+
    2023-01-31
    模块 Python pycurl
  • python模块学习----nmap模块
    安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...
    99+
    2023-01-31
    模块 python nmap
  • Python 模块学习
        模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1、getpass 2、os 3、sys 4、subprocess 5、hashlib 6、json 7、pickle 8、sh...
    99+
    2023-01-31
    模块 Python
  • python模块学习
    系统相关的信息模块: import sys sys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.st...
    99+
    2023-01-31
    模块 python
  • Python模块学习之IPy模块
    IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第...
    99+
    2023-01-31
    模块 Python IPy
  • python hashlib模块学习
    目录 hashlib 模块 破解密码 hmac 模块 1.干嘛用的: 对字符进行加密,其实就是一个自定义的字符编码表,...
    99+
    2023-01-31
    模块 python hashlib
  • python模块学习(1)
    模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。模块也是Python对象,具有随机的名字属性用来绑定或引用。简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变...
    99+
    2023-01-31
    模块 python
  • python学习-re模块
    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法。1.re的简介    使用python...
    99+
    2023-01-31
    模块 python
  • python optparse模块学习
    本文参考:http://docs.python.org/2/library/optparse.htmlPython 有两个内建的模块用于处理命令行参数:一个是 getopt,getopt只能简单处理 命令行参数。另一个是 optparse,...
    99+
    2023-01-31
    模块 python optparse
  • python学习-smtplib模块
     python的stmplib模块可以实现邮件的发送功能,可以模拟一个smtp客户端。在python2.3或者更高版本默认自带smtplib模块,无需额外安装。一、smtplibi模块的常用类与方法    smtp类定义:smtplib([...
    99+
    2023-01-31
    模块 python smtplib
  • python学习-psuti模块
    psutil(进程和系统实用程序)是一个跨平台的库,用于 在Python中检索有关运行进程和系统利用率(CPU,内存,磁盘,网络,传感器)的信息。它主要用于系统监视,分析和限制流程资源以及运行流程的管理。它实现了UNIX命令行工具提供的许多...
    99+
    2023-01-31
    模块 python psuti
  • python学习-OS模块
    OS模块是python内建模块,主要是对大量文件和大量路径进行操作os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'...
    99+
    2023-01-31
    模块 python OS
  • Python学习—json模块
    json模块 四个常用方法 son.dumps() 将python对象编码成为json的字符串格式(最常用的是字典,列表集合等都可以) json.dump() 将python对象编码成为json的字符串格式并写入文件 json...
    99+
    2023-01-31
    模块 Python json
  • Python模块学习--email
    可以使用Python的email模块来实现带有附件的邮件的发送。 SMTP (Simple Mail Transfer Protocol)   邮件传送代理 (Mail Transfer Agent,MTA) 程序...
    99+
    2023-01-31
    模块 Python email
  • python模块学习(queue模块的Q
    学习版本3.5.2 PriorityQueue类和LifoQueue类继承Queue类然后重写了_init、_qsize、_put、_get这四个类的私有方法 Queue:先进先出队列的同步实现,通过双向列表实现的 # Initi...
    99+
    2023-01-31
    模块 python queue
  • Python学习—paramiko模块实
    paramiko模块 paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。 import paramiko # ssh root@ip # 创建一个ssh对象 ...
    99+
    2023-01-31
    模块 Python paramiko
  • python中pickle模块学习
       在python中有一个pickle的标准模块,这个模块可以把几乎python中所有类型通过模块转换成pickle所能识别的格式进行存储。  pickel模块主要有两个函数dump()和load()  dump()可以把数据对象以特定...
    99+
    2023-01-31
    模块 python pickle
  • Python学习之PyYaml模块
    我需要解析twemproxy的配置文件中的pool和后端的redis主机。采用shell解析yml文件太麻烦,正好python有正对于yaml文件解析的pyyaml模块例如twemporxy的配置文件nutcracker.yamlalpha...
    99+
    2023-01-31
    模块 Python PyYaml
  • python模块之paramiko学习<
    简介: paramiko是python(2.2或更高)的模块,遵循SSH2协议实现了安全(加密和认证)连接远程机器。 安装所需软件包: http://ftp.dlitz.net/pub/dlitz/crypto...
    99+
    2023-01-31
    模块 python paramiko
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作