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. Java生鲜电商平台-定时器,定时任务quartz的设计与架构

    Java生鲜电商平台-定时器,定时任务quartz的设计与架构 说明:任何业务有时候需要系统在某个定点的时刻执行某些任务,比如:凌晨2点统计昨天的报表,早上6点抽取用户下单的佣金. 对于Java开源生 ...

  2. csp 201809-1卖菜

    问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店都自己定了一个价格.店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商 ...

  3. VS2010 报错该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

    尤其代码是从linux平台复制过来: 报错如图: 更有甚者基本函数都报错: 当下检查发现if else break case等基本函数并无问题时,报错行数明显不一致等一定要注意文档编码格式, 最简单的 ...

  4. python 排序和查找算法

    一.搜索 1.顺序查找 数据存储在具有线性或顺序关系的结构中时,可顺序访问查找 def sequential_search(ilist, item): pos = 0 while pos < l ...

  5. 【初识Spring】对象(Bean)实例化及属性注入(注解方式)

    通过xml的方式进行对象的实列化或属性注入或许有一些繁琐,所以在开发中常用的方式更多是通过注解的方式实现对象实例化和属性注入的. 开始之前 1.导入相关的包(除了导入基本的包还要导入aop的包): 创 ...

  6. AOD.NET实现数据库事物Transaction

    在开始介绍文章主要内容前先简单说一下事务 1.事务介绍 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库 ...

  7. ucoreOS_lab2 实验报告

    所有的实验报告将会在 Github 同步更新,更多内容请移步至Github:https://github.com/AngelKitty/review_the_national_post-graduat ...

  8. 2-1Numpy概述

    In [1]: import numpy as np In [2]: array=[1,2,3,4,5] array+1#没定义成numpy.ndarray类型是不能直接操作的   --------- ...

  9. E06 【买衣服】Maybe you need a bigger size

    核心句型 Maybe you need a bigger size 也许您需要大一些的. 场景对话 A:Can I try this jacket on,please? 我能试试这件夹克吗? B:Su ...

  10. 唐敬博-201871010118 《面向对象程序设计(java)》第六、七周学习总结

    在博客园撰写博客(随笔),总结6-7周学习内容(包括实验内容),作业格式要求如下: 博文名称:学号-姓名<面向对象程序设计(java)>第四周学习总结(1分) 博文正文开头格式:(2分) ...