Python Pycurl的属性与方法案例详解

 更新时间:2021年09月01日 16:07:05   投稿:xusong  
这篇文章主要介绍了Python Pycurl的属性与方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

Pycurl包是一个libcurl的Python接口,由C语言编写的,功能强大,速度快。由于pycurl的属性和方法太多了,写这篇博文记录一下pycurl的属性和方法。

正常安装

pip install pycurl

如果出现问题,可以按照系统版本搜索安装方法,比如centos7.1 安装pycurl

通用请求方法

import pycurl,urllib
from io import BytesIO
 
url = 'http://www.baidu.com'
 
headers = [
	"User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3",
]
 
data = {
	"cityListName":"",
	"trade": ""
	}
 
c = pycurl.Curl()	#通过curl方法构造一个对象
#c.setopt(pycurl.REFERER, 'http://www.baidu.com/')	#设置referer
c.setopt(pycurl.FOLLOWLOCATION, True)	#自动进行跳转抓取
c.setopt(pycurl.MAXREDIRS,5)			#设置最多跳转多少次
c.setopt(pycurl.CONNECTTIMEOUT, 60)		#设置链接超时
c.setopt(pycurl.TIMEOUT,120)			#下载超时
c.setopt(pycurl.ENCODING, 'gzip,deflate')	#处理gzip内容
# c.setopt(c.PROXY,ip)	# 代理
c.fp = BytesIO()	
c.setopt(pycurl.URL, url)	#设置要访问的URL
c.setopt(pycurl.HTTPHEADER,headers)		#传入请求头
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, urllib.urlencode(data))		#传入POST数据
c.setopt(c.WRITEFUNCTION, c.fp.write)	#回调写入字符串缓存
c.perform()		
 
code = c.getinfo(c.HTTP_CODE)	#返回状态码
html = c.fp.getvalue()	#返回源代码
 
print c.getinfo(c.TOTAL_TIME)

GET请求方法

c = pycurl.Curl()   #通过curl方法构造一个对象
c.setopt(pycurl.FOLLOWLOCATION, True)   #自动进行跳转抓取
c.setopt(pycurl.MAXREDIRS,5)            #设置最多跳转多少次
c.setopt(pycurl.CONNECTTIMEOUT, 60)     #设置链接超时
c.setopt(pycurl.TIMEOUT,120)            #下载超时
c.setopt(pycurl.ENCODING, 'gzip,deflate')   #处理gzip内容
# c.setopt(c.PROXY,ip)  # 代理
c.fp = BytesIO()  
c.setopt(pycurl.URL, url)   #设置要访问的URL
c.setopt(pycurl.USERAGENT,ua) #传入ua
# c.setopt(pycurl.HTTPHEADER,self.headers)     #传入请求头
c.setopt(c.WRITEFUNCTION, c.fp.write)   #回调写入字符串缓存
c.perform()     
code = c.getinfo(c.HTTP_CODE)   #返回状态码
html = c.fp.getvalue()  #返回源代码

POST请求方法

c = pycurl.Curl()   #通过curl方法构造一个对象
c.setopt(pycurl.FOLLOWLOCATION, True)   #自动进行跳转抓取
c.setopt(pycurl.MAXREDIRS,5)            #设置最多跳转多少次
c.setopt(pycurl.CONNECTTIMEOUT, 60)     #设置链接超时
c.setopt(pycurl.TIMEOUT,120)            #下载超时
c.setopt(pycurl.ENCODING, 'gzip,deflate')   #处理gzip内容
# c.setopt(c.PROXY,ip)  # 代理
c.fp = BytesIO()  
c.setopt(pycurl.URL, url)   #设置要访问的URL
c.setopt(pycurl.USERAGENT,ua ) #传入User-Agent
# c.setopt(pycurl.HTTPHEADER,headers)     #传入请求头
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, urllib.parse.urlencode(data))
c.setopt(c.WRITEFUNCTION, c.fp.write)   #回调写入字符串缓存
c.perform()     
code = c.getinfo(c.HTTP_CODE)   #返回状态码
html = c.fp.getvalue()  #返回源代码

windows访问https

windows 访问https的方法,需要证书

import certifi
c.setopt(pycurl.CAINFO, certifi.where())

获取网页多重跳转之后的地址

c.getinfo(pycurl.EFFECTIVE_URL) 获取网页的最终地址

记录Cookie

c.setopt(pycurl.COOKIEFILE, "cookie_file_etherscan") #读取cookie
c.setopt(pycurl.COOKIEJAR, "cookie_file_etherscan") #设置cookie

其他属性

pycurl的部分API:

pycurl.Curl() #创建一个pycurl对象的方法
pycurl.Curl(pycurl.URL, http://www.google.com.hk) #设置要访问的URL
pycurl.Curl().setopt(pycurl.MAXREDIRS, 5) #设置最大重定向次数
pycurl.Curl().setopt(pycurl.CONNECTTIMEOUT, 60)
pycurl.Curl().setopt(pycurl.TIMEOUT, 300) #连接超时设置
pycurl.Curl().setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)") #模拟浏览器
pycurl.Curl().perform() #服务器端返回的信息
pycurl.Curl().getinfo(pycurl.HTTP_CODE) #查看HTTP的状态 类似urllib中status属性
 
 
pycurl.NAMELOOKUP_TIME 域名解析时间
pycurl.CONNECT_TIME 远程服务器连接时间
pycurl.PRETRANSFER_TIME 连接上后到开始传输时的时间
pycurl.STARTTRANSFER_TIME 接收到第一个字节的时间
pycurl.TOTAL_TIME 上一请求总的时间
pycurl.REDIRECT_TIME 如果存在转向的话,花费的时间
pycurl.HTTP_CODE HTTP 响应代码
pycurl.REDIRECT_COUNT 重定向的次数
pycurl.SIZE_UPLOAD 上传的数据大小
pycurl.SIZE_DOWNLOAD 下载的数据大小
pycurl.SPEED_UPLOAD 上传速度
pycurl.HEADER_SIZE 头部大小
pycurl.REQUEST_SIZE 请求大小
pycurl.CONTENT_LENGTH_DOWNLOAD 下载内容长度
pycurl.CONTENT_LENGTH_UPLOAD 上传内容长度
pycurl.CONTENT_TYPE 内容的类型
pycurl.RESPONSE_CODE 响应代码
pycurl.SPEED_DOWNLOAD 下载速度
pycurl.INFO_FILETIME 文件的时间信息
pycurl.HTTP_CONNECTCODE HTTP 连接代码

参考文档

http://pycurl.io/docs/latest/quickstart.html

到此这篇关于Python Pycurl的属性与方法案例详解的文章就介绍到这了,更多相关Python Pycurl的属性与方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)

    Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)

    今天小编就为大家分享一篇Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python实现钉钉机器人自动打卡天天早下班

    python实现钉钉机器人自动打卡天天早下班

    这篇文章主要为大家介绍了python实现钉钉机器人自动打卡天天下早班实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Pycharm Plugins加载失败问题解决方案

    Pycharm Plugins加载失败问题解决方案

    这篇文章主要介绍了Pycharm Plugins加载失败问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 带你学习Python如何实现回归树模型

    带你学习Python如何实现回归树模型

    这篇文章主要介绍了Python如何实现回归树模型,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 老生常谈python中的重载

    老生常谈python中的重载

    所谓重载,就是多个相同函数名的函数,根据传入的参数个数,参数类型而执行不同的功能。所以函数重载实质上是为了解决编程中参数可变不统一的问题。这篇文章主要介绍了老生常谈python中的重载,需要的朋友可以参考下
    2018-11-11
  • pycharm设置python文件模板信息过程图解

    pycharm设置python文件模板信息过程图解

    这篇文章主要介绍了pycharm设置python文件模板信息过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python根据出生日期获得年龄的方法

    python根据出生日期获得年龄的方法

    这篇文章主要介绍了python根据出生日期获得年龄的方法,涉及Python操作日期的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Python中Numpy的深拷贝和浅拷贝

    Python中Numpy的深拷贝和浅拷贝

    这篇文章主要介绍了Python中Numpy的深拷贝和浅拷贝,通过讲解Python中对Numpy数组操作的浅拷贝和深拷贝的概念和背后的原理展开全文,需要的小伙伴可以参考一下
    2022-05-05
  • python连接手机自动搜集蚂蚁森林能量的实现代码

    python连接手机自动搜集蚂蚁森林能量的实现代码

    这篇文章主要介绍了python连接手机自动搜集蚂蚁森林能量的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • python实现简单遗传算法

    python实现简单遗传算法

    这篇文章主要介绍了python如何实现简单遗传算法,帮助大家更好的利用python进行数据分析,感兴趣的朋友可以了解下
    2020-09-09

最新评论