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多线程编程(二):启动线程的两种方法
Apr 05 Python
python实现计算倒数的方法
Jul 11 Python
Python 爬虫爬取指定博客的所有文章
Feb 17 Python
python中 logging的使用详解
Oct 25 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
python对文件的操作方法汇总
Feb 28 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
python中entry用法讲解
Dec 04 Python
opencv python 对指针仪表读数识别的两种方式
Jan 14 Python
提取视频中的音频 Python只需要三行代码!
May 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
PHP 类相关函数的使用详解
2013/05/10 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
2013/06/26 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
详解Python中for循环的使用方法
2015/05/14 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
高中班级口号
2014/06/09 职场文书
加油口号大全
2014/06/13 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
学位证书委托书
2014/09/30 职场文书
工程承包协议书
2014/10/20 职场文书
确保工程质量承诺书
2015/04/29 职场文书
医学会议开幕词
2016/03/03 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
JavaScript函数柯里化
2021/11/07 Javascript