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查询Mysql时返回字典结构的代码
Jun 18 Python
python构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
使用rpclib进行Python网络编程时的注释问题
May 06 Python
python爬取淘宝商品详情页数据
Feb 23 Python
python实现泊松图像融合
Jul 26 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
简单了解python高阶函数map/reduce
Jun 28 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
Python 如何展开嵌套的序列
Aug 01 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 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分页显示制作详细讲解
2006/10/09 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
详解PHP归并排序的实现
2016/10/18 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
学习Node.js模块机制
2016/10/17 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
谈谈JS中的!!
2017/12/07 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
Python3中的真除和Floor除法用法分析
2016/03/16 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Python笔试面试题小结
2019/09/07 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
护理自荐信
2013/10/22 职场文书
会计学应届毕业生推荐信
2013/11/04 职场文书
学校消防演习方案
2014/02/19 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
委托书范本
2014/04/02 职场文书
学术诚信承诺书
2014/05/26 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js