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实现从字典中删除元素的方法
May 04 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
Aug 16 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
Sanic框架路由用法实例分析
Jul 16 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 Python
python实现弹跳小球
May 13 Python
详解Django admin高级用法
Nov 06 Python
python with (as)语句实例详解
Feb 04 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
May 24 Python
Python 数据科学 Matplotlib图库详解
Jul 07 Python
Python机器学习实战之k-近邻算法的实现
Nov 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提示undefined index的几种解决方法
2012/05/21 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
JavaScript 函数式编程的原理
2009/10/16 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
Vue filter介绍及详细使用
2018/04/04 Javascript
Python使用Supervisor来管理进程的方法
2015/05/28 Python
Python守护进程用法实例分析
2015/06/04 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
使用django自带的user做外键的方法
2020/11/30 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
鉴定评语大全
2014/05/05 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
工资证明范本
2015/06/12 职场文书
工作自我评价范文
2019/03/21 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
Vue如何清空对象
2022/03/03 Vue.js