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中的多进程与多线程的使用
Apr 07 Python
python插入数据到列表的方法
Apr 30 Python
python中enumerate函数用法实例分析
May 20 Python
Python实现多线程抓取妹子图
Aug 08 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
Python常用算法学习基础教程
Apr 13 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
python中的错误如何查看
Jul 08 Python
Python中Yield的基本用法
Oct 18 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
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
php 上传功能实例代码
2010/04/13 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
10款实用的PHP开源工具
2015/10/23 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
Python heapq使用详解及实例代码
2017/01/25 Python
python实时监控cpu小工具
2018/06/21 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
谈谈Python中的while循环语句
2019/03/10 Python
python的依赖管理的实现
2019/05/14 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
python实现学生通讯录管理系统
2021/02/25 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
自我评价格式
2014/01/06 职场文书
考察现实表现材料
2014/05/19 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android