Python模仿POST提交HTTP数据及使用Cookie值的方法

作者:shichen2014 时间:2022-05-04 04:37:35 

本文实例讲述了在Python中模仿POST HTTP数据及带Cookie提交数据的实现方法,分享给大家供大家参考。具体实现方法如下:

方法一

如果不使用Cookie, 发送HTTP POST非常简单:

import urllib2, urllib
data = {'name' : 'www', 'password' : '123456'}
f = urllib2.urlopen(
        url     = 'https://www.jb51.net/',
        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,POST,HTTP,Cookie
0
投稿

猜你喜欢

  • Python中设置变量访问权限的方法

    2023-09-13 15:42:15
  • python 容器总结整理

    2021-03-20 16:52:08
  • IE6下的CSS BUG枚举

    2010-06-11 10:45:00
  • JavaScript声明变量的这四兄弟(var、let、function、const)

    2024-05-09 15:03:05
  • python必备库Matplotlib画图神器

    2021-03-29 21:16:08
  • Pytorch 如何加速Dataloader提升数据读取速度

    2023-11-12 00:00:32
  • Python中一些不为人知的基础技巧总结

    2023-07-19 21:59:42
  • GoFrame代码优化gconv类型转换避免重复定义map

    2024-04-27 15:32:04
  • python3.4中清屏的处理方法

    2023-11-14 04:09:21
  • python如何使用jt400.jar包代码实例

    2021-05-07 03:50:46
  • 使用python实现画AR模型时序图

    2021-07-03 01:11:08
  • Python中encode()方法的使用简介

    2023-09-22 15:26:38
  • Python用requests模块实现动态网页爬虫

    2022-10-15 16:27:06
  • 带你一文读懂Python垃圾回收机制

    2022-03-03 11:58:03
  • python怎么自定义捕获错误

    2022-05-25 02:57:35
  • JS画5角星方法介绍

    2024-05-13 09:06:36
  • 在数据库中自动生成编号的实现方法分享

    2024-01-23 03:02:04
  • VuePress使用Algolia实现全文搜索

    2024-04-28 09:29:56
  • PHP addslashes()函数讲解

    2023-06-04 04:28:24
  • 解决Python数据可视化中文部分显示方块问题

    2021-01-27 03:53:36
  • asp之家 网络编程 m.aspxhome.com