requests模塊學習(比urllib更簡單易用的HTTP庫)

requests介紹

我們已經學過Python內置的urllib模塊,也能訪問網頁,但是用起來比較麻煩。然而requests模塊提供了更簡單易用的功能。
可通過pip install requests來安裝。

簡單使用requests的例子

resp = requests.get(url, params={})
其中可以通過params來傳遞參數,注意params是dict類型

屬性 描述
resp.status_code 返回HTTP Status
resp.headers 返回response header信息, 返回類型是key不區分大小寫的dict子類
resp.content 返回bytes類型的response
resp.text 返回unicode類型的response
resp.encoding 返回response所屬編碼(自動檢測)
resp.reason Textual reason of responded HTTP Status, e.g. “Not Found” or “OK”
resp.is_redirect 判斷是否發生了重定向
resp.url 返回響應的最終url
resp.json() 將響應數據以json格式返回

下面代碼最後通過api查詢手機所屬的地址信息。

import requests

url = "https://www.qq.com"

resp = requests.get(url)
# HTTP Status 如 200 404
print("status: ",resp.status_code)
# header信息
print("response headers:", resp.headers)
# bytes類型的response
print("bytes response:", resp.content)
# unicode類型的response
print("unicode response:", resp.text)
# response所屬編碼(自動檢測)
print("response encoding:", resp.encoding)
# Textual reason of responded HTTP Status, e.g. "Not Found" or "OK"
print("reason:", resp.reason)
# 判斷是否發生了重定向
print("is redirect:", resp.is_redirect)
# 響應的最終url
print("final url:", resp.url)
# 將響應內容以json格式返回 由於訪問的騰訊頁面並不是返回json數據 故此處註釋掉該代碼
# resp.json()

# 可通過 params 來傳遞參數, 注意是dict類型
resp = requests.get("http://tcc.taobao.com/cc/json/mobile_tel_segment.htm", params={"tel": "18627210383"})

在這裏插入圖片描述
在這裏插入圖片描述

基於百度翻譯API獲取翻譯結果

import requests
from pprint import pprint

url = "https://fanyi.baidu.com/sug"
content = input("請輸入您想要翻譯的內容: ")
data = {"kw": content}
headers = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}
resp = requests.post(url, data=data, headers=headers)
res_json = resp.json()
pprint(res_json)

在這裏插入圖片描述

會話處理和cookie處理

urllib模塊,一樣是基於自己寫的簡單的SpringBoot程序來做的會話處理和cookie處理。
下面代碼有詳細的註釋就不解釋了。
需要提醒的是使用requests模塊傳遞json數據有如下兩種方式。

import requests
from pprint import pprint

pre_url = "http://localhost:8080"
# 保持會話
session = requests.Session()

def login():
    url = pre_url + "/login"
    data = {"username": "admin", "password": "admin"}
    # 傳遞json數據的兩種方式 下面被註釋掉的是第一種
    # headers = {"Content-Type": "application/json"}
    # resp = requests.post(url, data=json.dumps(data), headers=headers)
    # 第二種
    resp = session.post(url, json=data)
    # 打印response裏的cookie值 當然服務端設置了cookie值纔會有
    for k,v in resp.cookies.items():
        print("{}={}".format(k,v))
    pprint(resp.json())
    # 設置cookie 其中cookie的類型是requests.cookies.RequestsCookieJar
    session.cookies.set("test", "ok")
    # 獲取cookie值
    print("JSESSIONID={}".format(session.cookies.get("JSESSIONID")))

def user_list():
    url = pre_url + "/user/list"
    resp = session.get(url)
    pprint(resp.json())


if __name__ == "__main__":
    login()
    user_list()
    pass

在這裏插入圖片描述

參考網址

廖雪峯老師的Python教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章