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抓取百度首页的方法
May 19 Python
Python中List.count()方法的使用教程
May 20 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python3连接mysql获取ansible动态inventory脚本
Jan 19 Python
python实现人工蜂群算法
Sep 18 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
python 常用的异步框架汇总整理
Jun 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
PHP验证码函数代码(简单实用)
2013/09/29 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
JS重学系列之聊聊new操作符
2019/03/04 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
python版大富翁源代码分享
2018/11/19 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
《学会待客》教学反思
2014/02/22 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
勇敢的心观后感
2015/06/09 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
分享一些Java的常用工具
2021/06/11 Java/Android
利用JavaScript写一个简单计算器
2021/11/27 Javascript
Python sklearn分类决策树方法详解
2022/09/23 Python