requests通過接口下載文件


利用requsts請求接口下載文件的操作

測試接口如圖:

fiddler抓包信息如下:請求頭里面需要傳遞登錄成功的token,才能去訪問excel導出的接口。

思路就是先登錄獲取token,再去請求excel導出接口:

import requests


def login():
    login_url = 'https://gateway-boss-test.bgyfw.com/erp/boss/users/login'
    json = {"password":"123456",
            "loginName":"admin"}
    headers = {"Content-Type": "application/json",
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
               }
    res = requests.post(login_url,json=json,headers=headers)
    # print(res.status_code)
    login_token = res.json()['data']['token']
    return login_token

def download_file():
    download_url = 'https://gateway-boss-test.bgyfw.com/rc/boss-app-fees/estate/cognizance/exportRoomExcel'

    headers = {
        "Content-Type": "application/json",
        "Access-Token": login()
    }
    json = {"commId":"","regionId":"","roomSnum":"","roomIsLock":"","roomState":"","regionName":"","chargePro":"","roomId":"","roomSign":""}
    r = requests.post(url=download_url,json=json,headers=headers,stream=False)
    print(r.status_code)
    # print(r.encoding)
    # encoding='utf-8'
    print(r.content.decode('GBK','ignore'))
    with open(r'E:\\new.xls','wb') as f:
        if r.status_code==200:
            for chunk in r.iter_content(chunk_size=1):   # todo iter_content循環讀取信息寫入,chunk_size設置文件大小
                f.write(chunk)
if __name__ == '__main__':
    download_file()

requests中stream參數的作用:

iter_content循環讀取文件內容寫入到excel里面去:

運行結果如下:

打開excel如下:

下面再來看我自己本地寫的一個下載接口:

頁面如圖,根據傳遞的圖片名稱,下載文件:

抓包信息如圖:

前端html頁面如圖,通過filename參數傳遞文件名到后端,接口先判斷文件名格式是否正常,在判斷文件是否存在:

通過request請求接口下載圖片:

import requests

def download_picture():
    url = 'http://127.0.0.1:8000/download/'
    data = {"filename":500}
    r = requests.post(url,data=data)
    print(r.status_code)
    print(r.text)
    if r.status_code == 200:
        if r.text:   # TODO 判斷文件內容是否為空
            with open(r'E:\\new.png', 'wb') as f:
                    for chunk in r.iter_content(chunk_size=1):  # todo iter_content循環讀取信息寫入,chunk_size設置文件大小
                        f.write(chunk)
        else:
            print("文件為空")

download_picture()

運行之后如圖:

E盤下載的圖片:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM