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数据结构之翻转链表
Feb 25 Python
python中lambda()的用法
Nov 16 Python
mac下如何将python2.7改为python3
Jul 13 Python
解决pandas .to_excel不覆盖已有sheet的问题
Dec 10 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
Python程序包的构建和发布过程示例详解
Jun 09 Python
Python3简单实现串口通信的方法
Jun 12 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
Django中使用MySQL5.5的教程
Dec 18 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
Python pathlib模块使用方法及实例解析
Oct 05 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
php 文件上传实例代码
2012/04/19 PHP
php实现Mysql简易操作类
2015/10/11 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
python图片合成的示例
2020/11/09 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
任课老师推荐信范文
2013/11/24 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
教师队伍管理制度
2014/01/14 职场文书
节约用电标语
2014/06/17 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书