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 相关文章推荐
在Windows8上的搭建Python和Django环境
Jul 03 Python
详解Django rest_framework实现RESTful API
May 24 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
python3 requests库文件上传与下载实现详解
Aug 22 Python
用Python解数独的方法示例
Oct 24 Python
Python 复平面绘图实例
Nov 21 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
tensorflow 限制显存大小的实现
Feb 03 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
Python logging模块写入中文出现乱码
May 21 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
python 实现一个图形界面的汇率计算器
Nov 09 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
javascript实现的listview效果
2007/04/28 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
原生js调用json方法总结
2018/02/22 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
python抓取最新博客内容并生成Rss
2015/05/17 Python
详解Python3中字符串中的数字提取方法
2017/01/14 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
房地产开盘策划方案
2014/02/10 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
大学专科求职信
2014/07/02 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
观看信仰心得体会
2014/09/04 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
初中物理教学反思
2016/02/19 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书