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 21 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
浅谈python新式类和旧式类区别
Apr 26 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
如何使用Python实现斐波那契数列
Jul 02 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
python matplotlib拟合直线的实现
Nov 19 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Jun 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中的stdClass类
2014/04/18 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
PDO::_construct讲解
2019/01/27 PHP
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
简明 Python 基础学习教程
2007/02/08 Python
王纯业的Python学习笔记 下载
2007/02/10 Python
Python中的字典遍历备忘
2015/01/17 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
Python高斯消除矩阵
2019/01/02 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
人力资源专员岗位职责
2014/01/30 职场文书
学校党员对照检查材料
2014/08/28 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书