使用pycurl进行web提交
来源:互联网 发布:淘淘商城项目完整源码 编辑:程序博客网 时间:2024/06/05 21:06
之前使用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_pagedef 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 pycurlimport StringIOimport urllib
好了,给出个例子
c = initCurl() html = GetDate(c, 'http://www.baidu.com') print html
全部脚本
- 使用pycurl进行web提交
- pycurl 上传文件 提交
- pycurl+json监控web
- pycurl+web服务质量检测
- 使用pycurl上传文件
- python pycurl 使用
- pycurl 使用 跳转
- PycURL库使用
- python3使用pycurl库
- Python web测试模块pycurl
- PycURL
- pycurl
- 使用Python 2.7中pycurl模块编写探测多节点Web服务质量脚本
- python-pycurl库的使用
- python使用pycurl模块详解
- python使用pycurl模块详解
- pycurl和requests使用感受
- python使用pycurl模块详解
- 28.整数的二进制表示中1的个数
- 《远控编程笔记》第七天
- PL/SQL批处理语句:BULK COLLECT 和 FORALL对优化的贡献
- 实现二路归并排序算法
- GetHostbyName函数用法
- 使用pycurl进行web提交
- 《虚拟化、云计算、开放源代码及其他》讲述虚拟化与IaaS
- NetBeans所用的jdk目录配置
- NSSearchPathForDirectoriesInDomains
- [gpu pro]《狂野西部:生死同盟》的渲染技术
- 点评阿里云盛大云代表的云计算IaaS产业
- grep && and ||
- uva10098 - Generating Fast(快速生成有序排列)
- 面向对象的三大特征及其作用