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中元类用法实例
Oct 10 Python
python中split方法用法分析
Apr 17 Python
介绍Python中的fabs()方法的使用
May 14 Python
python查看zip包中文件及大小的方法
Jul 09 Python
利用python写个下载teahour音频的小脚本
May 08 Python
Django后台admin的使用详解
Jul 08 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
python 如何用map()函数创建多线程任务
Apr 07 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 smarty 二级分类代码和模版循环例子
2011/06/01 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
在html页面中包含共享页面的方法
2008/10/24 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
详解Python编程中包的概念与管理
2015/10/16 Python
详解Python迭代和迭代器
2016/03/28 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
卫校中专生个人自我评价
2013/09/19 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
入学申请自荐信范文
2014/02/26 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
践行三严三实心得体会
2014/10/13 职场文书
幼师中班个人总结
2015/02/12 职场文书
2014年底个人工作总结
2015/03/10 职场文书