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遍历文件夹并删除特定格式文件的示例
Mar 05 Python
Python中使用dom模块生成XML文件示例
Apr 05 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
Python框架Flask的基本数据库操作方法分析
Jul 13 Python
Python内存读写操作示例
Jul 18 Python
Python类的继承用法示例
Jan 31 Python
Python实现截取PDF文件中的几页代码实例
Mar 11 Python
解决Django中多条件查询的问题
Jul 18 Python
python tornado修改log输出方式
Nov 18 Python
Python assert关键字原理及实例解析
Dec 13 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
python制作一个简单的gui 数据库查询界面
Nov 19 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基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
vue实现购物车的监听
2020/04/20 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
Python自动发送邮件的方法实例总结
2018/12/08 Python
python url 参数修改方法
2018/12/26 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
基于Python正确读取资源文件
2020/09/14 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
公司JAVA开发面试题
2015/04/02 面试题
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
环保建议书作文
2014/03/12 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
Python快速实现一键抠图功能的全过程
2021/06/29 Python