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单链表实现代码实例
Nov 21 Python
Python random模块常用方法
Nov 03 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Sanic框架流式传输操作示例
Jul 18 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
谈谈Python中的while循环语句
Mar 10 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
python基于property()函数定义属性
Jan 22 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 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
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
简单的js表单验证函数
2013/10/28 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
大整数数相乘的问题
2012/07/22 面试题
迅雷Cued工作心得体会
2014/01/27 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
国庆节标语大全
2014/10/08 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
详解Redis主从复制实践
2021/05/19 Redis
MySQL笔记 —SQL运算符
2022/01/18 MySQL