1. 程式人生 > >requests中get和post傳參

requests中get和post傳參

get請求

get(url, params=None, **kwargs)

requests實現get請求傳參的兩種方式

方式一:

import requests

url = 'http://www.baidu.com/s?wd=python'  # 使用?攜帶引數
r = requests.get(url)
print(r.url)

執行結果:
	http://www.baidu.com/s?wd=python

方式二:

import requests

url = 'http://www.baidu.com/s'  
params = {'wd': 'python'}  # 也可以將攜帶的引數傳給params
r = requests.get(url, params=params)
print(r.url)

執行結果:
	http://www.baidu.com/s?wd=python

推薦使用第一種方式,程式碼簡潔,如果需要引數化url中的引數可以參照如下方式:

import requests

lists = ['python', 'php', 'Java']

for i in lists:
    url = 'http://www.baidu.com/s?wd=%s' % (str(i))
    r = requests.get(url)
    print(r.url)

執行結果:
	http://www.baidu.com/s?wd=python
	http://www.baidu.com/s?wd=php
	http://www.baidu.com/s?wd=Java

post請求

post(url, data=None, json=None, **kwargs)

post請求是我們常說的提交表單,表單的資料內容就是post請求的引數,request實現post請求需設定請求引數data,資料格式可以為字典、元組、列表和json格式,不同資料格式有不同的優勢。

示例程式碼:

import requests
# import json

"""
字典轉json方法
data = {'key1': '1', 'key2': '2'}
data = json.dumps(data)
"""

url = 'http://www.baidu.com'
data = 'python'

r = requests.post(url, data=data)  # 使用data攜帶引數
print(r.text)

data是傳送請求到網站(伺服器)的資料。

注意:requests的get和post方法的請求引數分別是params 和 data,不要混淆兩者的使用要求。

獲取相應內容

  • r.status_code:響應狀態碼
  • r.raw:原始響應體,使用r.raw.read()讀取
  • r.content:位元組方式的響應體,需要進行解碼
  • r.text:字串方式的響應體,會自動更具響應頭部的字元編碼進行解碼
  • r.headers:以字典物件儲存伺服器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在,則返回None
  • r.json():request中內建的json解碼器
  • r.raise_for_status():請求失敗(非200響應),丟擲異常
  • r.url:獲取請求的url
  • r.cookies:獲取請求後的cookies
  • r.encoding:獲取編碼格式