python 如何使用requests下载文件

目录
  • 使用requests下载文件
    • 1、获取token,或者session
    • 2、获取下载路径
    • 3、根据下载路径拼接下载url
  • 用requests.get下载文件
    • 不知道大家有没有遇到这样的问题

使用requests下载文件

1、获取token,或者session

如不需要可忽略

login_url = "http://xxxx/api/auth/login"
login_data = {"username":"test3","password":"123456"}
login_res = requests.post(url=login_url,data = login_data)
token = login_res.json()["data"]["token"]

2、获取下载路径

如果请求后直接返回文件内容,可直接进行第三步

batch_url = "http://xxxx/api/models/batch"
batch_data = {"ids":"[4]","version_number":"[309]"}
headers = {"Authorization":"bearer %s" % token}
batch_res = requests.get(url=batch_url,params=batch_data,headers=headers)

3、根据下载路径拼接下载url

完成文件下载以及写入

file_path = batch_res.json()['data']['file_path']
file_name = batch_res.json()['data']['file_name']
down_url = "http://xxxx/api/report/down"
down_data = {"type":2,
             "file_path":file_path,
             "file_name":file_name,
             "token":token
             }
down_res = requests.get(url=down_url,params=down_data)
with open(file_name,"wb") as code:
    code.write(down_res.content)

备注:

第二步返回json数据,包含路径、文件名,实际是文件生成过程,第三步下载在服务端生成的文件,有时第三步无法在页面F12查看到,需要使用抓包工具获取

用requests.get下载文件

不知道大家有没有遇到这样的问题

就是url源不稳定,时不时下载到空文件,我终于想到了一个解决的好办法,分享给大家。

def downloadfile(url,filename=None):
  if(not filename):							#如果参数没有指定文件名
    filename=os.path.basename(url)			#取用url的尾巴为文件名
  leng=1
  while(leng==1):
    torrent=requests.get(url,headers=headers)
    leng=len(list(torrent.iter_content(1024)))  #下载区块数
    if(leng==1):								#如果是1 就是空文件 重新下载
      print(filename,'下载失败,重新下载')
      sleep(1)
    else:
      print(path,'下载完成')
  with open(filename,'wb') as f:
    for chunk in torrent.iter_content(1024):	#防止文件过大,以1024为单位一段段写入
      f.write(chunk)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python实现下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法requests. 下面来看看三种方法是如何来下载zip文件的: 方法一: import urllib import urllib2 import requests print "downloading with urllib" url = 'http://www.jb51.net//te

  • Python实现使用request模块下载图片demo示例

    本文实例讲述了Python实现使用request模块下载图片.分享给大家供大家参考,具体如下: 利用流传输下载图片 # -*- coding: utf-8 -*- import requests def download_image(): """ demo:下载图片 :return: """ headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) Ap

  • python 下载文件的几种方法汇总

    前言 使用脚本进行下载的需求很常见,可以是常规文件.web页面.Amazon S3和其他资源.Python 提供了很多模块从 web 下载文件.下面介绍 一.使用 requests requests 模块是模仿网页请求的形式从一个URL下载文件 示例代码: import requests url = 'xxxxxxxx' # 目标下载链接 r = requests.get(url) # 发送请求 # 保存 with open ('r.txt', 'rb') as f: f.write(r.con

  • python3 requests库文件上传与下载实现详解

    在接口测试学习过程中,遇到了利用requests库进行文件下载和上传的问题.同样,在真正的测试过程中,我们不可避免的会遇到上传和下载的测试. 文件上传: url = ztx.host+'upload/uploadFile?CSRFToken='+self.getCSRFToken()#上传文件的接口地址 header = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko', '

  • python 如何使用requests下载文件

    目录 使用requests下载文件 1.获取token,或者session 2.获取下载路径 3.根据下载路径拼接下载url 用requests.get下载文件 不知道大家有没有遇到这样的问题 使用requests下载文件 1.获取token,或者session 如不需要可忽略 login_url = "http://xxxx/api/auth/login" login_data = {"username":"test3","passw

  • python实现从网络下载文件并获得文件大小及类型的方法

    本文实例讲述了python实现从网络下载文件并获得文件大小及类型的方法.分享给大家供大家参考.具体实现方法如下: import urllib2 from settings import COOKIES opener = urllib2.build_opener() cookies = ";".join("%s=%s" % (k, v) for k, v in COOKIES.items()) opener.addheaders.append(('Cookie', c

  • python实现上传下载文件功能

    最近刚学python,遇到上传下载文件功能需求,记录下! django web项目,前端上传控件用的是uploadify. 文件上传 - 后台view 的 Python代码如下: @csrf_exempt @require_http_methods(["POST"]) def uploadFiles(request): try: user = request.session.get('user') allFimeNames = "" #获取所有上传文件 files

  • Python根据URL地址下载文件并保存至对应目录的实现

    引言 在编程中经常会遇到图片等数据集将图片等数据以URL形式存储在txt文档中,为便于后续的分析,需要将其下载下来,并按照文件夹分类存储.本文以Github中Alexander Kim提供的图片分类数据集为例,下载其提供的图片样本并分类保存 Python 3.6.5,Anaconda, VSCode 1. 下载数据集文件 建立项目文件夹,下载上述Github项目中的raw_data文件夹,并保存至项目目录中.  2. 获取样本文件位置 编写get_doc_path.py,根据根目录位置,获取目录

  • python实现从ftp服务器下载文件

    代码之余,将代码过程重要的一些代码段备份一下,如下的代码内容是关于Python从ftp服务器下载文件的的代码,希望能对小伙伴有用途. #coding=utf-8 ''' ftp自动下载.自动上传脚本,可以递归目录操作 ''' from ftplib import FTP import os,sys,string,datetime,time import socket class MYFTP: def __init__(self, hostaddr, username, password, rem

  • python实现从ftp上下载文件的实例方法

    python从ftp上下载文件的方法: 首先导入ftp模块: 然后使用[chdir]命令切换工作路径: 再使用"self.ftp.nlst()"命令获取目录下的文件: 最后使用"self.ftp.retrbinary()"命令下载ftp文件即可. #!/usr/bin/python # coding=utf-8 import os from ftplib import FTP # 引入ftp模块 class MyFtp: ftp = FTP() def __init

  • Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_all() from gevent.pool import Pool import requests import sys import os def download(url): chrome = 'Mozilla/5.0 (X11; Linux i86_64) AppleWebKit/537.36

  • python递归下载文件夹下所有文件

    最近想备份网站,但是php下载文件的大小是有大小限制的,而我也懒得装ftp再下载了,就想着暂时弄个二级域名站,然后用python(python3)的requests库直接下载网站根目录下的所有文件以及文件夹.(0-0就是这么任性) 1.安装requests库 pip install requests 2.下载文件夹下所有文件及文件夹 这里需要处理的地方主要是文件夹,这里我们判断出该链接是文件夹时,自动创建文件夹,并递归继续进行操作,否则判断该链接是文件,直接使用requests get方法下载,

  • Python无头爬虫下载文件的实现

    有些页面并不能直接用requests获取到内容,会动态执行一些js代码生成内容.这个文章主要是对付那些特殊页面的,比如必须要进行js调用才能下载的情况. 安装chrome wget [https://dl.google.com/linux/direct/google-chrome-stable\_current\_x86\_64.rpm](https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm) yum

随机推荐