1、说明

用 IIS 以WEB形式发布了本地文件夹,提供文件下载,并设置了访问权限;默认下载需要点击一个一个的下载,web界面如下:

3、脚本

执行脚本批量下载文件,会在当前目录创建文件夹,并压缩该文件夹。

# -*- coding: utf-8 -*-
import requests
import re
import os
import zipfile
import urllib3
urllib3.disable_warnings() # 需要下载的文件信息
year =
month =
date =
folder = 'PH003' # 网站信息
username = 'admin'
password = '*********'
domain = ['https://*****.com']
files_url = 'https://*****.com/%s/%s/%s/%s/' % (year, month, date, folder)
dir_name = '%s_%s_%s_%s' % (year, month, date, folder)
zip_dir_name = '%s.zip' % dir_name def create_folder(path):
isExists = os.path.exists(path)
if not isExists:
os.makedirs(path)
print("目录" + path + "创建成功")
return True
else:
print("目录" + path + "已存在")
return False def get_html():
# 获取网页源代码
r = requests.get(files_url, auth=(username, password), verify=False)
html = r.content.decode('utf-8')
# print(html) # 获取“url+文件名称”块
url_content = re.compile(r'<A HREF=".*?">.*?</A>', re.S)
url_contents = re.findall(url_content, html)
return url_contents def get_name_url():
# 过滤出文件url、文件名称
name_url = []
url_contents = get_html()
for i in url_contents:
# 过滤
url_reg = re.compile(r'<A HREF="(.*?)">')
name_reg = re.compile(r'<A HREF=".*?">(.*?)</A>')
url_items = re.findall(url_reg, i)
name_items = re.findall(name_reg, i) # 拼接下载地址
url = domain + url_items
url_items = ["".join(url)]
# print(files_url_items)
# print(name_items) for k, v in zip(name_items, url_items):
if k == "[转到父目录]":
continue
else:
name_url.append([k, v])
return name_url def download_files(dir_name):
# 下载文件
create_folder(dir_name)
name_url = get_name_url()
for i in name_url:
# i[0]:name, i[1]:url
r = requests.get(i[1], auth=(username, password), verify=False)
with open("%s\\%s" % (dir_name, i[0]), "wb") as code:
code.write(r.content)
print("正在下载:" + i[0])
print("下载完成,开始压缩") def zip_files(dir_name, zip_dir_name):
# 压缩文件夹
z = zipfile.ZipFile(zip_dir_name, 'w', zipfile.ZIP_DEFLATED)
for dirpath, dirnames, filenames in os.walk(dir_name):
fpath = dirpath.replace(dir_name, '')
fpath = fpath and fpath + os.sep or ''
for filename in filenames:
z.write(os.path.join(dirpath, filename), fpath + filename)
print('压缩成功')
z.close() def main():
download_files(dir_name)
zip_files(dir_name, zip_dir_name) main()

执行结果如下:

Python - 批量下载 IIS 共享的文件的更多相关文章

  1. 用Python批量下载DACC的MODIS数据

    本人初次尝试用Python批量下载DACC的MODIS数据,记下步骤,提醒自己,数据还在下载,成功是否未知,等待结果中...... 若有大佬发现步骤有不对之处,望指出,不胜感激. 1.下载Python ...

  2. Python批量复制和重命名文件

    Python批量复制和重命名文件 示例代码 #! /usr/bin/env python # coding=utf-8 import os import shutil import time impo ...

  3. Python批量修改Excel中的文件内容

    import osimport xlrdfrom xlutils.copy import copydef base_dir(filename=None):    return os.path.join ...

  4. 用python批量下载贴吧图片 附源代码

    环境:windows 7 64位:python2.7:IDE pycharm2016.1 功能: 批量下载百度贴吧某吧某页的所有帖子中的所有图片 使用方法: 1.安装python2.7,安装re模块, ...

  5. Python 批量下载BiliBili视频 打包成软件

    文章目录 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...

  6. 使用Python批量下载Plus上的Podcast

    Plus是一个介绍数学之美与实际应用的网络杂志,其中包含了数学知识.轶闻趣事.历史典故等许多精彩的内容.该杂志恰好有一个Podcast栏目,提供了不少采访与讲座的mp3音频.于是, 我使用Python ...

  7. python批量下载微信好友头像,微信头像批量下载

    #!/usr/bin/python #coding=utf8 # 自行下载微信模块 itchat 小和QQ496631085 import itchat,os itchat.auto_login() ...

  8. java批量下载,将多文件打包成zip格式下载

    现在的需求的: 根据产品族.产品类型,下载该产品族.产品类型下面的pic包: pic包是zip压缩文件: t_product表: 这些包以blob形式存在另一张表中: t_imagefile表: 现在 ...

  9. 用python批量下载图片

    一 写爬虫注意事项 网络上有不少有用的资源, 如果需要合理的用爬虫去爬取资源是合法的,但是注意不要越界,前一阶段有个公司因为一个程序员写了个爬虫,导致公司200多个人被抓,所以先进入正题之前了解下什么 ...

随机推荐

  1. Log4基本配置

    前言:作为一个程序员你要学会调试,对于一种调试都无法找到问题所在的情况,你要学会看日志,要学会看日志你的学会怎么样去写入日志,接下来教你配置C#Log4 第一步,你的在配置文件中配置好对应的参数 &l ...

  2. java servlet 初学笔记

    1. 页面HTML标签中的中文乱码 在 doGet 或者 doPost 等方法内的第一行添加: response.setCharacterEncoding("gbk"); 2. 避 ...

  3. mysql只显示表名和备注

    查看某个数据下的表及其备注: select table_name,table_comment from information_schema.tables where table_schema='db ...

  4. Java网上体育商城系统ssh

    网上体育商城的主要功能包括:前台用户登录退出.注册.在线购物.修改个人信息.后台商品管理等等.本系统结构如下:(1)商品浏览模块:        首页浏览最新上市商品,按销量排行显示商品        ...

  5. Ajax异步后台加载Html绑定不上事件

    因项目需要,需要实时从后台动态加载html,开发过程中,遇到事件绑定不上,后来百度一番,大概意思:ajax是异步加载的,页面一开始绑定事件的时候,后台数据还没有传过来,就绑定事件,这个时候找不到这个d ...

  6. BootStrap-treeview 参考

    简要教程 bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一 ...

  7. PHP 简单面向对象 验证码类(静态实例对象调用)

    没事写了一个简单的面向对象验证码类,可以直接使用(替换一下字体路径) <?php class authCode { private static $instance = null; #实例对象 ...

  8. maven 学习---Maven配置之pom文件配置包含和排除测试

    本文地址:http://blog.csdn.net/wirelessqa/article/details/14057083 包含(Inclusions )默认情况下Surefire Plugin会自动 ...

  9. LeeCode——Combine Two Tables

    Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...

  10. 多版本切换python

    Python 安装包去官网自行下载: https://www.python.org/downloads/mac-osx/ Mac os 自带python, 但我记得是python2.7版本 在选择安装 ...