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 24 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
Python字符串特性及常用字符串方法的简单笔记
Jan 04 Python
Python输出带颜色的字符串实例
Oct 10 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 Python
Python异常处理操作实例详解
May 10 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
python中的变量如何开辟内存
Jun 26 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
Python常见反爬虫机制解决方案
Jun 01 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 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简单系统查询模块代码打包下载
2008/06/07 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
PHP分享图片的生成方法
2018/04/25 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
vue组件name的作用小结
2018/05/23 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
Python中运行并行任务技巧
2015/02/26 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
jupyter实现重新加载模块
2020/04/16 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
事业单位绩效考核实施方案
2014/03/27 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
地震捐款倡议书
2014/08/29 职场文书
质检员岗位职责
2015/02/03 职场文书
导游词之韩国济州岛
2019/10/28 职场文书