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在Console下显示文本进度条的方法
Feb 14 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
Python 占位符的使用方法详解
Jul 10 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
django项目中新增app的2种实现方法
Apr 01 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
Python如何输出百分比
Jul 31 Python
如何使用Python实现一个简易的ORM模型
May 12 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 Python
python中pycryto实现数据加密
Apr 29 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
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
php实现倒计时效果
2015/12/19 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
vue生命周期实例小结
2018/08/15 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
django2.0扩展用户字段示例
2019/02/13 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
营销与策划个人求职信
2013/09/22 职场文书
出国考察邀请函
2014/01/21 职场文书
邀请函怎么写
2015/01/30 职场文书
公司车队管理制度
2015/08/04 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL