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 相关文章推荐
Linux下编译安装MySQL-Python教程
Feb 02 Python
一步步教你用Python实现2048小游戏
Jan 19 Python
python实现K最近邻算法
Jan 29 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
python3安装crypto出错及解决方法
Jul 30 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
基于python爬取有道翻译过程图解
Mar 31 Python
利用Python制作动态排名图的实现代码
Apr 09 Python
python RSA加密的示例
Dec 09 Python
Python利用socket模块开发简单的端口扫描工具的实现
Jan 27 Python
python+opencv实现车道线检测
Feb 19 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 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 EOT定界符的使用详解
2008/09/30 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
SQL Server面试题
2016/10/17 面试题
如何转换一个字符串到enum值
2014/04/12 面试题
麦当劳辞职信范文
2014/01/18 职场文书
第一书记观后感
2015/06/08 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python