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实现的解析crontab配置文件代码
Jun 30 Python
python+pyqt实现右下角弹出框
Oct 26 Python
python让列表倒序输出的实例
Jun 25 Python
python实现录音小程序
Oct 26 Python
详解Python locals()的陷阱
Mar 26 Python
Python-接口开发入门解析
Aug 01 Python
Python简易版图书管理系统
Aug 12 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
Python命令行click参数用法解析
Dec 19 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
opencv实现图像平移效果
Mar 24 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
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
php构造函数与析构函数
2016/04/23 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
layui使用label标签的方法
2019/09/14 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
Python数据类型详解(一)字符串
2016/05/08 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Django开发的简易留言板案例详解
2018/12/04 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
2014年销售内勤工作总结
2014/12/01 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript