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


Posted in Python onAugust 31, 2019

最近想备份网站,但是php下载文件的大小是有大小限制的,而我也懒得装ftp再下载了,就想着暂时弄个二级域名站,然后用python(python3)的requests库直接下载网站根目录下的所有文件以及文件夹。(0-0就是这么任性)

1.安装requests库

pip install requests

2.下载文件夹下所有文件及文件夹

这里需要处理的地方主要是文件夹,这里我们判断出该链接是文件夹时,自动创建文件夹,并递归继续进行操作,否则判断该链接是文件,直接使用requests get方法下载,话不多说,看代码

####春江暮客 www.bobobk.com
import requests
import re
import os
import sys
def help(script):
 text = 'python3 %s https://www.bobobk.com ./' % script

 print(text)
def get_file(url,path):##文件下载函数
  content = requests.get(url)
  print("write %s in %s" % (url,path))
  filew = open(path+url.split("/")[-1],'wb')
  for chunk in content.iter_content(chunk_size=512 * 1024): 
    if chunk: # filter out keep-alive new chunks
      filew.write(chunk)
  filew.close()
def get_dir(url,path): #文件夹处理逻辑
  content = requests.get(url).text
  if "<title>Index of" in content:
    sub_url = re.findall('href="(.*?)" rel="external nofollow" ',content)
  
    print(sub_url)
    for i in sub_url:
      if "/" in i:
      
        i = i.split("/")[0]
        print(i)
        if i!="." and i!="..":
          
          if not os.direxists(path+i):
            os.mkdir(path+i)
         
          get_dir(url+"/"+i,path+i+"/")
          print("url:"+url+"/"+i+"\nurl_path:"+path+i+"/")
      else:
        get_file(url+"/"+i,path)
  else:
    get_file(url,path)
if __name__ == '__main__':
 if not sys.argv[1]:
 help(sys.argv[0])
 exit(0)
 else:
 get_dir(sys.argv[1],"./")

至此,就在本地目录完全还原下载原网站的路径和文件了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
python 上下文管理器使用方法小结
Oct 10 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
pytorch 输出中间层特征的实例
Aug 17 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
Django如何创作一个简单的最小程序
May 12 Python
Python提取PDF指定内容并生成新文件
Jun 09 Python
Python中time与datetime模块使用方法详解
Mar 31 Python
python或C++读取指定文件夹下的所有图片
Aug 31 #Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 #Python
Django项目后台不挂断运行的方法
Aug 31 #Python
python遍历文件目录、批量处理同类文件
Aug 31 #Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 #Python
python批量处理文件或文件夹
Jul 28 #Python
在pycharm中显示python画的图方法
Aug 31 #Python
You might like
PHP 实用代码收集
2010/01/22 PHP
php学习之 认清变量的作用范围
2010/01/26 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
Js+XML 操作
2006/09/20 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
Cookie 小记
2010/04/01 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
python操作oracle的完整教程分享
2018/01/30 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
python exit出错原因整理
2020/08/31 Python
教育课题研究自我鉴定范文
2013/12/28 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
医院保洁服务方案
2014/06/11 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书