Python Pycurl的属性与方法案例详解
作者:xusong 发布时间:2022-09-27 04:57:23
标签: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
来源:https://junyiseo.com/python/607.html
0
投稿
猜你喜欢
- 本文实例讲述了SQLSERVER简单创建DBLINK操作远程服务器数据库的方法。分享给大家供大家参考,具体如下:--配置SQLSERVER数
- 如何通过表单创建一个Word?举个例子吧,我们先创建一个表单文件docform.htm,再用ASP程序(doccreate.asp)来处理表
- 一、题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。X 星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每
- 配置数据库密码特殊字符报错一般的springboot项目会有application.yml或者application.properties文
- 1.排序示例表内容见此篇文章Mysql支持数据排序操作,例如,现在我们按照工资从小到大进行排序操作:mysql> select ena
- 在实现算法的时候,通常会从两方面考虑算法的复杂度,即时间复杂度和空间复杂度。顾名思义,时间复杂度用于度量算法的计算工作量,空间复杂度用于度量
- 人工智能有多火,相信铺天盖地的新闻已经证实了这一点,不可否认,我们已经迎来了人工智能的又一次高潮。与前几次人工智能的飞跃相比,这一次人工智能
- 数据库隔离级别有四种,应用《高性能mysql》一书中的说明:然后说说修改事务隔离级别的方法:1.全局修改,修改mysql.ini配置文件,在
- 本文实例讲述了Python爬取需要登录的网站实现方法。分享给大家供大家参考,具体如下:import requestsfrom lxml im
- SQL Server 2005的新功能为动态管理对象,它们是在指定时间返回某个数据库实例的特殊状态信息的数据库视图或函数。这些对象允许数据库
- 下载小姐姐图片并保存请求的地址伪装定位元素下载图片保存好了下面开始我们的实战,这个是我们今天访问的url:url = 'http:/
- pygame如何捕捉鼠标的活动初始化参数import pygame, sysfrom pygame.locals import *def p
- 问题最近在使用 Vue 做东西,用到钉钉扫描登录的功能,这里需要引入远程的 js 文件,因为 Vue 的方式跟之前的不太一样,又不想把文件下
- 1、pd.cut函数有7个参数,主要用于对数据从最大值到最小值进行等距划分 pandas.cut(x, bins,&nb
- show内容展示尝试用微信小程序的template组件实现。同时,尝试页面间转跳时传参,在目标页面引入模板文件实现 写的更少,做的更多 篇幅
- 第一步my-default.ini 添加配置:#绑定IPv4和3306端bind-address = 127.0.0.1port = 330
- 导语暗恋让人受尽委屈!一开始,你是我的秘密,我怕你知道,又怕你不知道,又怕你知道装作不知道!这大概就是暗恋的感受吧,可若是双向奔赴,那简更是
- 1:定义存储过程,用于分隔字符串DELIMITER $$USE `mess`$$DROP PROCEDURE IF EXISTS `spli
- 一、Pytorch distributed 多卡并行载入模型这次来介绍下如何载入模型。目前没有找到官方的distribute 载入模型的方式
- 知识点简单的装饰器带有参数的装饰器带有自定义参数的装饰器类装饰器装饰器嵌套@functools.wrap装饰器使用基础使用简单的装饰器def