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的属性与方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pycharm没有找到manage repositories按钮的解决办法

    pycharm没有找到manage repositories按钮的解决办法

    这篇文章主要给大家介绍了关于pycharm没有找到manage repositories按钮的解决办法,pycharm是用来写python的可视化代码软件,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • python中的插入排序的简单用法

    python中的插入排序的简单用法

    在本篇内容里小编给各位分享的是一篇关于python中的插入排序的简单用法,有兴趣的朋友们可以参考学习下。
    2021-01-01
  • OpenCV imread读取图片失败的问题及解决

    OpenCV imread读取图片失败的问题及解决

    这篇文章主要介绍了OpenCV imread读取图片失败的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • python2 中 unicode 和 str 之间的转换及与python3 str 的区别

    python2 中 unicode 和 str 之间的转换及与python3 str 的区别

    这篇文章主要介绍了python2 中 unicode 和 str 之间的转换及与python3 str 的区别 本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • 用Python编写脚本使IE实现代理上网的教程

    用Python编写脚本使IE实现代理上网的教程

    这篇文章主要介绍了用Python编写脚本使IE实现代理上网的教程,“著名的”goagent代理也是基于同样原理实现,需要的朋友可以参考下
    2015-04-04
  • python 实现一次性在文件中写入多行的方法

    python 实现一次性在文件中写入多行的方法

    今天小编就为大家分享一篇python 实现一次性在文件中写入多行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python 实现 pymysql 数据库操作方法

    python 实现 pymysql 数据库操作方法

    这篇文章主要介绍了python实现pymysql数据库操作方法,文章基于python的相关内容展开对 pymysql 数据库操作方法的详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • Python3 批量扫描端口的例子

    Python3 批量扫描端口的例子

    今天小编就为大家分享一篇Python3 批量扫描端口的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python实现下雪效果的示例代码

    Python实现下雪效果的示例代码

    turtle是Python编程语言中的一个模块,用于绘制图形和图形动画,本文主要为大家详细介绍了Python如何使用turtle实现张万森下雪了的效果,感兴趣的可以了解下
    2023-12-12
  • python next()和iter()函数原理解析

    python next()和iter()函数原理解析

    这篇文章主要介绍了python next()和iter()函数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论