Python - 批量下载 IIS 共享的文件
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 共享的文件的更多相关文章
- 用Python批量下载DACC的MODIS数据
本人初次尝试用Python批量下载DACC的MODIS数据,记下步骤,提醒自己,数据还在下载,成功是否未知,等待结果中...... 若有大佬发现步骤有不对之处,望指出,不胜感激. 1.下载Python ...
- Python批量复制和重命名文件
Python批量复制和重命名文件 示例代码 #! /usr/bin/env python # coding=utf-8 import os import shutil import time impo ...
- Python批量修改Excel中的文件内容
import osimport xlrdfrom xlutils.copy import copydef base_dir(filename=None): return os.path.join ...
- 用python批量下载贴吧图片 附源代码
环境:windows 7 64位:python2.7:IDE pycharm2016.1 功能: 批量下载百度贴吧某吧某页的所有帖子中的所有图片 使用方法: 1.安装python2.7,安装re模块, ...
- Python 批量下载BiliBili视频 打包成软件
文章目录 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...
- 使用Python批量下载Plus上的Podcast
Plus是一个介绍数学之美与实际应用的网络杂志,其中包含了数学知识.轶闻趣事.历史典故等许多精彩的内容.该杂志恰好有一个Podcast栏目,提供了不少采访与讲座的mp3音频.于是, 我使用Python ...
- python批量下载微信好友头像,微信头像批量下载
#!/usr/bin/python #coding=utf8 # 自行下载微信模块 itchat 小和QQ496631085 import itchat,os itchat.auto_login() ...
- java批量下载,将多文件打包成zip格式下载
现在的需求的: 根据产品族.产品类型,下载该产品族.产品类型下面的pic包: pic包是zip压缩文件: t_product表: 这些包以blob形式存在另一张表中: t_imagefile表: 现在 ...
- 用python批量下载图片
一 写爬虫注意事项 网络上有不少有用的资源, 如果需要合理的用爬虫去爬取资源是合法的,但是注意不要越界,前一阶段有个公司因为一个程序员写了个爬虫,导致公司200多个人被抓,所以先进入正题之前了解下什么 ...
随机推荐
- C#循环结构
一.背景: 因编程的基础差,因此最近开始巩固学习C#基础,后期把自己学习的东西,总结相应文章中,有不足处请大家多多指教. 二.简介 有的时候,可能需要多次执行同一块代码.一般情况下,语句是顺序执行的: ...
- Winform ListBox输出信息并自动滚动至底部
应用场景:ListBox作为软件信息的输出框. //ListBox输出信息 internal void SetListBoxMessage(string str) { if (this.Message ...
- 写一个操作 .ini文件的类
class IniHelp { private string iniPath; [DllImport("kernel32")] private static extern long ...
- array list 的特点及几种遍历方法
public class temp { public static void main(String[] args)throws Exception { //ArrayList 在定义时长度为空 ,在 ...
- mssql SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
解决方法: 工具-〉选项-〉左侧有个 设计器-〉表设计器和数据库设计器 -> 阻止保存要求重新创建表的更改(右侧) 把钩去掉即可.
- webpack4 babel 篇
demo 代码点此,如果对 babel 不熟,可以看一下babel 7 简单指北. webpack 使用 babel 来打包使用 es6 及以上语法的 js 文件是非常方便的,可以通过配置,将 es6 ...
- 程序员必备技能之Markdown
Markdown介绍 Markdown是一种纯文本格式的标记语言,比HTML更简单,通过一些简单的语法标记,就可以让文本简洁好看. Markdown已经是程序员一项必备技能了,代码块.流程图.序列图. ...
- vue3.0创建项目和基本配置
借鉴博客:https://www.jianshu.com/p/6307c568832d/ https://www.cnblogs.com/KenFine/p/10850386.html 项目创建好后, ...
- centos7 安装gitlab及简单配置
1.安装 wget -O gitlab.rpm https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-11.11.3 ...
- IOI 2020 集训队作业胡扯
首先安慰自己:做的没集训队快很正常-- 很正常-- 做不完也很正常-- 很正常-- 全都不会做也很正常-- 很正常-- 表格 试题一 完成情况 试题二 完成情况 试题三 完成情况 cf549E cf6 ...