pycurl的使用方法get and post

转自:http://www.xuebuyuan.com/743876.html

使用pycurl进行web提交

2012年10月10日 ⁄ 综合 ⁄ 共 1850字 ⁄ 字号    ⁄ 评论关闭

之前使用python提交数据到服务器时都是采用自带的urllib库。前一段时间登录某Cas系统时,总是莫名的失败。失败的原因好像是cookie的问题,各个页面需要共享cookie。尝试了多个给urllib设置cookie的方法,还是没能成功。

后来,试了pycurl,竟然成功了,那就使用pycurl吧。(很抱歉,我没能追查出为什么采用urllib2没有成功,也没有彻底研究出为何pycurl能够成功)

pycurl官方下载链接我没有打开,本人通过该链接下载。另外,本人使用的是python2.7。

首先,对pycurl进行简单的封装

def initCurl():
‘‘‘初始化一个pycurl对象,
尽管urllib2也支持 cookie 但是在登录cas系统时总是失败,并且没有搞清楚失败的原因。
这里采用pycurl主要是因为pycurl设置了cookie后,可以正常登录Cas系统
‘‘‘
        c = pycurl.Curl()
        c.setopt(pycurl.COOKIEFILE, "cookie_file_name")#把cookie保存在该文件中
        c.setopt(pycurl.COOKIEJAR, "cookie_file_name")
        c.setopt(pycurl.FOLLOWLOCATION, 1) #允许跟踪来源
        c.setopt(pycurl.MAXREDIRS, 5)
        #设置代理 如果有需要请去掉注释,并设置合适的参数
        #c.setopt(pycurl.PROXY, ‘http://11.11.11.11:8080′)
        #c.setopt(pycurl.PROXYUSERPWD, ‘aaa:aaa’)
        return c

然后,封装出HTTP中的两个常用方法,GET和POST

def GetDate(curl, url):
‘‘‘获得url指定的资源,这里采用了HTTP的GET方法
‘‘‘
        head = [‘Accept:*/*‘,
                ‘User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11‘]
        buf = StringIO.StringIO()
        curl.setopt(pycurl.WRITEFUNCTION, buf.write)
        curl.setopt(pycurl.URL, url)
        curl.setopt(pycurl.HTTPHEADER,  head)
        curl.perform()
        the_page =buf.getvalue()
        buf.close()
        return the_page
def PostData(curl, url, data):
‘‘‘提交数据到url,这里使用了HTTP的POST方法

备注,这里提交的数据为json数据,
如果需要修改数据类型,请修改head中的数据类型声明
‘‘‘
        head = [‘Accept:*/*‘,
                ‘Content-Type:application/xml‘,
                ‘render:json‘,
                ‘clientType:json‘,
                ‘Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3‘,
                ‘Accept-Encoding:gzip,deflate,sdch‘,
                ‘Accept-Language:zh-CN,zh;q=0.8‘,
                ‘User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11‘]
        buf = StringIO.StringIO()
        curl.setopt(pycurl.WRITEFUNCTION, buf.write)
        curl.setopt(pycurl.POSTFIELDS,  data)
        curl.setopt(pycurl.URL, url)
        curl.setopt(pycurl.HTTPHEADER,  head)
        curl.perform()
        the_page = buf.getvalue()
        #print the_page
        buf.close()
        return the_page

当然,还需要一些引用

import pycurl
import StringIO
import urllib

好了,给出个例子

    c = initCurl()
    html = GetDate(c, ‘http://www.baidu.com‘)
    print html
时间: 2024-09-30 00:11:50

pycurl的使用方法get and post的相关文章

pycurl的使用方法

pycurl的使用 pycurl是curl的一个python版本. pycurl的使用说明: pycurl的使用主要是一些参数的设定. 1,c.setopt(pycurl.URL,myurl) 设定链接的地址 2,c.setopt(pycurl.HTTPHEADER,['Content-Type: application/json','Content-Length: '+str(len(remove_str))]) 设置http的包头信息.注意,长度的字符传是用于put或者post等方法传参数的

pycurl之公共方法--请求/上传/下载,解析json

1 # -*- coding=utf-8 -*- 2 #curl公共程序 3 #张明伟 20200331 4 import pycurl 5 from io import BytesIO 6 import datetime,time,os 7 import logging 8 import json 9 from logging import handlers 10 testdebug=1 #测试模式:1为是,0为否 11 if testdebug: 12 ip = '221.122.125.2

Python pycurl模块 学习

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 &

httplib urllib urllib2 pycurl 比较

最近网上面试看到了有关这方面的问题,由于近两个月这些库或多或少都用过,现在根据自己的经验和网上介绍来总结一下. httplib 实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现.所以效率要比这两个库高一点.http://www.cnblogs.com/beiyeren/p/4046139.html #-*- coding:utf-8 –*- from urlparse import urlparse i

python pycurl属性

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库pycurl实例及参数详解

pycurl是功能强大的python的url库,是用c语言写的,速度很快,比urllib和httplib都快. 今天我们来看一下pycurl的用法及参数详解 常用方法: pycurl.Curl() #创建一个pycurl对象的方法 pycurl.Curl().setopt(pycurl.URL, http://www.***.com) #设置要访问的URL pycurl.Curl().setopt(pycurl.MAXREDIRS, 5) #设置最大重定向次数 pycurl.Curl().set

探测web服务器质量——pycurl

pycurl是一个用C语言写的libcurl Python实现,功能非常强大,支持的操作协议有FTP.HTTP.HTTPS.TELNET等,可以理解为Linux下curl命令功能的Python封装,简单易用. 下面会通过调用pycurl提供的方法,实现web服务质量的情况,比如相应的HTTP状态码.请求延时.HTTP头信息.下载速度等,利用这些信息可以定位服务响应慢的具体环节. 一.模块常用方法说明 pycurl.Curl()类实现创建一个libcurl包的Curl句柄对象,无参数,下面介绍Cu

Python学习笔记-实现探测Web服务质量

pycurl是一个用C语言写的libcurl Python实现,功能非常强大,支持的操作协议后FTP.HTTP.HTTPS.TELNET等,可以理解成Linux下curl命令功能的Python封装,简单易用 本例通过调用pycurl提供的方法,实现探测Web服务质量的情况,比如响应HTTP状态码.请求延时.HTTP头信息.下载速度等,利用这些信息可以定位服务响应慢的具体环节. pycurl.Curl()类实现创建一个libcurl包的Curl句柄对象,无参数. close()方法,对应的libc

二、业务服务监控

二.业务服务监控 1.文件内容差异对比方法 difflib模块实现文件内容差异对比,difflib作为python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与linux下的diff命令相似.我们可以使用difflib对比代码,配置文件的差别,在版本控制方面是非常有用. (1)示例:两个字符串的差异对比 通过使用difflib模块实现两个字符串的差异对比,然后以版本控制风格进行输出 [/root/text1_lines.py] #! /usr/bin/