Python模仿POST提交HTTP數據以及使用Cookie值

本文章介紹在Python中模仿POST HTTP數據,帶Cookie提交數據實現,這裏有兩個不同的實例方法,各位朋友可參考。


方法一


如果不使用Cookie, 發送HTTP POST非常簡單:

代碼如下

import urllib2, urllib

data = {'name' : 'www', 'password' : '123456'}
f = urllib2.urlopen(
url = 'http://www.111cn.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獲取A股數據列表的例子
    現在我相信各位對于中國的股票是又愛又恨吧,我們今天來做一個小小的測試就是利用python來
  • 本文章來給大家介紹一個利用PHP CURL模擬POST提交XML數據,因爲接受方只接受xml數據所以我就寫了一個,下面分享給各位朋友,有需要的朋友可參考. 代碼如下 $url = "http://www.111cn.net/ login"; <!--?xml version ...
  • 今天有朋友問我爲什麽PHPMyAdmin不能設置MySQL數據表auto increment值呢,後來我查看了原因他是使用了PHPMyadmin 4.0.2而它存在了一個bug無法在操作界面設置自動增量ID值了.解決辦法,換一個其它版本的phpmyadmin即可,升級到PHPMyAdmin 4.0.
  • Mssql insert數據提示:不能將值 NULL 插入列 'id'問題
    由于我們在創建mssql中的id值時,未讓id設爲自動增加id了,這樣我們如果不帶id值就
  • Python是可以操作數據庫了,我們下面一起來看一篇Python 調取MYSQL數據並插入到CSV文件,希望文章能夠幫助到各位.如何利用python腳本將遠程數據庫查詢值,並將該值按照csv中"column A"對應
  • python如何thrift框架操作hbase數據庫及shell操作
    HBase 是一個高可靠性.高效能.面向列.可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群.本文我們來看看python利用thrift操作hbase數據和shell操作 .以前都是用mongodb的,但是量大了,mongodb顯得不那麽靠譜,改成hb ...
  • 在向數據庫保存大批量數據時,爲提高效能,一般使用批量插入的方式提交數據,而不是每條數據都執行一次insert操作.下邊是一個使用JDBC 方式向Oracle數據庫批量插入數據的例子:例子 代碼如下 String sq
  • 使用Apache HBase處理海量數據深入學習
    近些年來,NoSQL發展趨勢越發高漲,是因爲web2.0的興起,傳統的關系型數據庫(sql)已經對大規模高並發顯得力不從心,在處理漲量數據問題,NoSQL更能勝任過去的幾年中,在多種方式的數據存儲和查詢上,我們都看到了真正意義上的爆炸式發展.其中被稱爲NoSQL的數據庫站在了改革的前沿,正在形成新的
一周排行
  • iPhone 5 A1429 iOS8.3開啓聯通4G網路的方法
    iPhone 5手機是 支持4g 網路了,如果你你的iPhone 5手機支持4G網路我們可 ...
  • 我們都知道使用一般的方法我們複制的內容是不可以跨浏覽器的哦,同時在ff下也沒有辦法實現複制內容到剪貼板的,下面我來介紹一款Zero Clipboard插件來實現IE跨浏覽器複制內容到剪貼板具體方法,有需要了解的同學可 ...
  • 本文我們來講講java開源框架Spring的松耦合示例,至于什麽是Spring,前面已經介紹過,大家也可以去百度搜搜.松耦合通常是基于消息的系統.面向對象設計的理念是把整個系統分成一組可重用的組件,然而,當系統變得越
  • 在mysql中limit是計算從X到Y的偏移記錄,如我們數據庫中100條記錄,如果我想取前20條從就可以直接limit 0,20條就可以得到我們要的結果了,下面我來具體介紹linut用法.mysql limit語法 ...
  • 下面來給大家簡單的分享一個Thinkphp 支持nginx phpinfo url設置方法,有需要的朋友可進入參考哦.最近在研究thinkcmf內容發布系統框架,于是安裝一個git bash,從github 下載了源
  • Outlook郵箱客戶端配置圖文教程imap協定
    下面來給大家介紹一篇在office中給Outlook郵箱客戶端配置圖文教程(imap協定) ...
  • iOS開發中類簇(Class Cluster)基礎、應用、使用心得
    類簇是一群隱藏在通用接口下的與實現相關的類,本文我們介紹iOS開發中類簇的基礎概念.子類, ...
  • 三星S6 edge如何設置來電黑名單(G9250)
    小編發過不小關于三星手機來電黑名單的一個設置教程,發現一個問題幾乎所有三星手機的 來電黑名
  • 在C#中Split函數是用來分割字符串的,這個與php中split函數幾乎是相同的,但我在使用Split分割字符串會發現一些問題,下面我一起來給大家總結一下.例1 代碼如下 string s="abcdea ...
  • 談到了使用require_once 仍然告訴說類被重定義的問題.于是想起了前幾天自己遇到的現象.在這裏和大家說一下,今天才想起調查具體原因,如果大家不說的話就快忘了.看來自己凡事果然不經大腦,大腦的二級緩存,及記憶體