千家信息网

Python中Pycurl属性与方法的示例分析

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,小编给大家分享一下Python中Pycurl属性与方法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Pycurl
千家信息网最后更新 2024年11月11日Python中Pycurl属性与方法的示例分析

小编给大家分享一下Python中Pycurl属性与方法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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

正常安装

pip install pycurl

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

通用请求方法

import pycurl,urllibfrom 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/') #设置refererc.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)  #设置要访问的URLc.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)   #设置要访问的URLc.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)   #设置要访问的URLc.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 certific.setopt(pycurl.CAINFO, certifi.where())

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

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

记录Cookie

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

其他属性

pycurl的部分API:

pycurl.Curl() #创建一个pycurl对象的方法pycurl.Curl(pycurl.URL, http://www.google.com.hk) #设置要访问的URLpycurl.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 连接代码

以上是"Python中Pycurl属性与方法的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0