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自动化构建工具scons使用入门笔记
Mar 10 Python
python使用datetime模块计算各种时间间隔的方法
Mar 24 Python
python中assert用法实例分析
Apr 30 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
对python中的xlsxwriter库简单分析
May 04 Python
Numpy中的mask的使用
Jul 21 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
用Python配平化学方程式的方法
Jul 20 Python
python复合条件下的字典排序
Dec 18 Python
python可视化大屏库big_screen示例详解
Nov 23 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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
风格模板初级不完全修改教程
2006/10/09 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
pandas数据拼接的实现示例
2020/04/16 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
经典团队口号
2014/06/06 职场文书
公证委托书标准格式
2014/09/11 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
无房证明样本
2015/06/17 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记