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图像处理之反色实现方法
May 30 Python
python爬取各类文档方法归类汇总
Mar 22 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
Python删除n行后的其他行方法
Jan 28 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
Python实现一个优先级队列的方法
Jul 31 Python
python基础之爬虫入门
May 10 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+MySQL5.0中文乱码解决方法
2006/11/20 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP中的float类型使用说明
2010/07/27 PHP
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python实现bucket排序算法实例分析
2015/05/04 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
C# Debug和Testing相关面试题
2015/10/25 面试题
简单叙述一下MYSQL的优化
2016/05/09 面试题
外贸英语专业求职信范文
2013/12/25 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
大雁塔英文导游词
2015/02/10 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
股东协议书范本2016
2016/03/21 职场文书
Golang生成Excel文档的方法步骤
2021/06/09 Golang