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 相关文章推荐
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
python自动翻译实现方法
May 28 Python
python中print的不换行即时输出的快速解决方法
Jul 20 Python
Python实现检测文件MD5值的方法示例
Apr 11 Python
pytorch permute维度转换方法
Dec 14 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 20 Python
如何利用python实现列表嵌套字典取值
Jun 10 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
html中select语句读取mysql表中内容
2006/10/09 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
功能强大的php分页函数
2016/07/20 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
详解vue 命名视图
2019/08/14 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
带你认识Django
2019/01/15 Python
PyTorch搭建多项式回归模型(三)
2019/05/22 Python
Django 反向生成url实例详解
2019/07/30 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
采购文员岗位职责
2013/11/20 职场文书
《燕子专列》教学反思
2014/02/21 职场文书
家长会主持词开场白
2014/03/18 职场文书
颁奖晚会主持词
2014/03/25 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
小学班级标语口号大全
2015/12/26 职场文书