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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 Python
python实现飞机大战游戏
Oct 26 Python
用pycharm开发django项目示例代码
Jun 13 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
python简单验证码识别的实现过程
Jun 20 Python
关于python中模块和重载的问题
Nov 02 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连接Oracle数据库
2006/10/09 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
python 实现图片批量压缩的示例
2020/12/18 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
财务管理专业应届毕业生求职信
2013/09/22 职场文书
经典婚礼主持词
2014/03/13 职场文书
文明演讲稿范文
2014/05/12 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python