首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 使用 urllib2 發送 POST 請求傳遞資料

     編輯:更多程式設計知識

Python 2 使用 urllib 編碼資料,urllib2 發送請求。Python 3 整合為 urllib.request、urllib.parse。本文示範 Python 2 版本發送表單資料並處理 Cookie。

核心程式碼 (Python 2)


# -*- coding: cp936 -*-
import urllib2
import urllib

def postHttp(name=None, tel=None, address=None, price=None,
             num=None, paytype=None, posttype=None, other=None):
    url = "https://www.xxx.com/dog.php"
    postdata = dict(name=name, tel=tel, address=address, price=price,
                    num=num, paytype=paytype, posttype=posttype, other=other)
    # URL 編碼
    postdata = urllib.urlencode(postdata)
    # 建立請求(自動加入 Content-Type: application/x-www-form-urlencoded)
    request = urllib2.Request(url, postdata)
    response = urllib2.urlopen(request)
    print(response.read())

# 呼叫範例
postHttp('姓名', '電話', '地址', '230元', '1',
         '貨到付款', 'EMS國內郵政特快專遞', '饑渴長耳兔-國際品牌')

Python 3 版本


import urllib.request
import urllib.parse

def postHttp(**kwargs):
    url = "https://www.xxx.com/dog.php"
    data = urllib.parse.urlencode(kwargs).encode('utf-8')
    req = urllib.request.Request(url, data=data, method='POST')
    with urllib.request.urlopen(req) as resp:
        print(resp.read().decode('utf-8'))

進階:Cookie 處理


import urllib2
import cookielib

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
# 後續請求自動攜帶/儲存 Cookie

注意事項

  • 資料編碼需與伺服器預期一致(通常 UTF-8)。
  • 大量資料建議使用 multipart/form-data(需手動構建或用 requests 套件)。
  • 錯誤處理:捕捉 urllib2.HTTPError, URLError。
  • 現代專案強烈建議使用 requests 套件,API 更簡潔強大。

requests 範例


import requests
resp = requests.post('https://www.xxx.com/dog.php', data=payload)
print(resp.text)

理解底層 urllib 機制有助於除錯,實務開發首選 requests。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved