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接收多播数据的代码
Mar 01 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
分析Python读取文件时的路径问题
Feb 11 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
用python实现将数组元素按从小到大的顺序排列方法
Jul 02 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 Python
Python中rapidjson参数校验实现
Jul 25 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
PHP实现文件上传与下载
2020/08/28 PHP
javascript的函数
2007/01/31 Javascript
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
jquery实现简单的无缝滚动
2015/04/15 Javascript
js命名空间写法示例
2015/12/18 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
Python3爬虫全国地址信息
2019/01/05 Python
Python实现爬取并分析电商评论
2020/06/19 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
易程科技软件测试笔试
2013/03/24 面试题
食堂采购员岗位职责
2014/03/17 职场文书
教师自我鉴定范文
2014/03/20 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
文艺晚会策划方案
2014/06/11 职场文书
社区义诊通知
2015/04/24 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
Python WSGI 规范简介
2021/04/11 Python