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的Django框架中forms表单类的使用方法详解
Jun 21 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
Python对象属性自动更新操作示例
Jun 15 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
Apr 05 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
May 11 Python
Opencv求取连通区域重心实例
Jun 04 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
python 用opencv实现霍夫线变换
Nov 27 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的类树(支持无限分类)
2006/10/09 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php实现计数器方法小结
2015/01/05 PHP
PHP的引用详解
2015/02/22 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
学生打架检讨书
2014/02/14 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
房产公证书样本
2015/01/23 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
js作用域及作用域链工作引擎
2022/07/07 Javascript