4、requests-基础
生活随笔
收集整理的這篇文章主要介紹了
4、requests-基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、發出一個get請求:
r = requests.get('https://github.com/timeline.json')返回給我們的r,是一個requets的對象,這個requests的對象中我們可以調用一些屬性,方便我們得到更加詳細的信息;
r.status_code # 響應狀態碼 r.content # 字節方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮 r.headers # 以字典對象存儲服務器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在則返回None r.json # Requests中內置的JSON解碼器 r.url # 獲取url r.encoding # 編碼格式 r.cookies # 獲取cookie r.raw # 返回原始響應體 r.text # 字符串方式的響應體,會自動根據響應頭部的字符編碼進行解碼 r.raise_for_status() # 失敗請求(非200響應)拋出異常同時,get方法可以接受參數:
# -*- coding:utf-8 -*-import requests# 字典的形式填充參數 params = {'k1': 'v1', 'k2': 'v2'} r = requests.get('http://www.baidu.com', params=params)
get請求,是將參數添加到url上:
http://www.baidu.com/?k2=v2&k1=v1同時你也可以把列表當做字典的值傳到url中:
params = {'k1': 'v1', 'k2': ['v2', 'v3', 'v4']}r = requests.get('http://www.baidu.com', params=params)#得到的url:http://www.baidu.com/?k2=v2&k2=v3&k2=v4&k1=v1
添加請求頭:
params = {'k1': 'v1', 'k2': ['v2', 'v3', 'v4']} header = {'k1': 'v1', 'k2': 'v2'}r = requests.get('http://www.baidu.com', params=params, headers=header)2、發起一個post的請求:
import requestsparams = {'k1': 'v1', 'k2': ['v2', 'v3', 'v4']} header = {'k1': 'v1', 'k2': 'v2'}r = requests.post('http://httpbin.org/post', data=params, headers=header)當然我們可以使用post傳遞json文件:
import requests import jsonparams = {'k1': 'v1', 'k2': ['v2', 'v3', 'v4']} header = {'k1': 'v1', 'k2': 'v2'}# 使用json庫,序列化python數據類型為json字符串 json_data = json.dumps(params)r = requests.post('http://httpbin.org/post', data=json_data, headers=header)
除了對dict進行編碼后傳遞,還可以json參數直接進行傳遞,它會自動幫我進行編碼:
params = {'k1': 'v1', 'k2': ['v2', 'v3', 'v4']} header = {'k1': 'v1', 'k2': 'v2'} json_data = json.dumps(params) # 使用json參數傳遞參數,傳遞之前會先進行序列化 r = requests.post('http://httpbin.org/post', json=params, headers=header)設置超時時間:
timeout?僅對連接過程有效,與響應體的下載無關。?timeout?并不是整個下載響應的時間限制,而是如果服務器在?timeout?秒內沒有應答,將會引發一個異常(更精確地說,是在timeout?秒內沒有從基礎套接字上接收到任何字節的數據時)
?
轉載于:https://www.cnblogs.com/liyu2151/p/7132735.html
總結
以上是生活随笔為你收集整理的4、requests-基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pg数据库数据导出
- 下一篇: 网页端Excel开发与设计