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 27 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
Python模拟三级菜单效果
Sep 11 Python
tensorflow识别自己手写数字
Mar 14 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
详解python运行三种方式
May 13 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 Python
python禁用键鼠与提权代码实例
Aug 16 Python
python实现两个文件夹的同步
Aug 29 Python
python支持多线程的爬虫实例
Dec 21 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
Python JSON常用编解码方法代码实例
Sep 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
php中{}大括号是什么意思
2013/12/01 PHP
php 使用array函数实现分页
2015/02/13 PHP
TBCompressor js代码压缩
2011/01/05 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
详解JS函数防抖
2020/06/05 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现下载指定网址所有图片的方法
2015/08/08 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
致100米运动员广播稿
2014/02/14 职场文书
物控部经理职务说明书
2014/02/25 职场文书
个人担保书格式范文
2014/05/12 职场文书
司法局火灾防控方案
2014/06/05 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python