Python模仿POST提交HTTP数据及使用Cookie值的方法


Posted in Python onNovember 10, 2014

本文实例讲述了在Python中模仿POST HTTP数据及带Cookie提交数据的实现方法,分享给大家供大家参考。具体实现方法如下:

方法一

如果不使用Cookie, 发送HTTP POST非常简单:

import urllib2, urllib

data = {'name' : 'www', 'password' : '123456'}

f = urllib2.urlopen(

        url     = 'https://3water.com/',

        data    = urllib.urlencode(data)

  )

print f.read()

当使用Cookie时, 代码变得有些复杂:
import urllib2

cookies = urllib2.HTTPCookieProcessor()

opener = urllib2.build_opener(cookies)

f = opener.open('http://www.xxxx.net/?act=login&name=user01')

data = '<root>Hello</root>'

request = urllib2.Request(

        url     = 'http://www.xxxx.net/?act=send',

        headers = {'Content-Type' : 'text/xml'},

        data    = data)

opener.open(request)

第一次 open() 是进行登录. 服务器返回的 Cookie 被自动保存在 cookies 中, 被用在后来的请求.

第二次 open() 用 POST 方法向服务器发送了 Content-Type=text/xml 的数据. 如果你不创建一个 Request, 而是直接使用 urlopen() 方法, Python 强制把 Content-Type 改为 application/x-www-form-urlencoded.

方法二

用urllib2库,带Cookie请求URL页面

例1:

import urllib2

opener = urllib2.build_opener()

opener.addheaders.append(('Cookie', 'cookiename=cookievalue'))

f = opener.open("http://example.com/")

例2:
import urllib2

import urllib

from cookielib import CookieJar

 

cj = CookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

# input-type values from the html form

formdata = { "username" : username, "password": password, "form-id" : "1234" }

data_encoded = urllib.urlencode(formdata)

response = opener.open("https://page.com/login.php", data_encoded)

content = response.read()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python连接mysql数据库示例(做增删改操作)
Dec 31 Python
Python的设计模式编程入门指南
Apr 02 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
Django框架下在视图中使用模版的方法
Jul 16 Python
python xml解析实例详解
Nov 14 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
python实现复制文件到指定目录
Oct 16 Python
openCV提取图像中的矩形区域
Jul 21 Python
解决c++调用python中文乱码问题
Jul 29 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
Python类的多重继承问题深入分析
Nov 09 #Python
python查询mysql中文乱码问题
Nov 09 #Python
python刷投票的脚本实现代码
Nov 08 #Python
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 #Python
Python中的__new__与__init__魔术方法理解笔记
Nov 08 #Python
Python使用百度API上传文件到百度网盘代码分享
Nov 08 #Python
python中readline判断文件读取结束的方法
Nov 08 #Python
You might like
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
基于jQuery的图片剪切插件
2011/08/03 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
python pytest进阶之fixture详解
2019/06/27 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
康拓普公司Java笔面试
2016/09/23 面试题
银行实习人员自我鉴定
2013/09/22 职场文书
应届生污水处理求职信
2013/11/06 职场文书
公司聘任书模板
2014/03/29 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
2019教师的学习计划
2019/06/25 职场文书
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python