最新微语
源源走丢了 4小时前
这世界上除我以外所有人的存在,都只是为了...
源源走丢了 4天前
我感觉不到这个世界是真实的,我也感觉不到...
源源走丢了 1个月前
最近出差来到了米易。最开始跟爷爷奶奶说要...
源源走丢了 2个月前
今天是罕见的闰年2月29日,同时恰逢每周...
源源走丢了 2个月前
幻想被爱是一种严重的心理疾病。
Do you like me?
14
最新评论
源源走丢了
@黎夏:欢迎复制,都是想到一点加一点,慢...
3个月前
黎夏
@源源走丢了:哈哈哈,是你的介绍太好玩了...
3个月前
源源走丢了
@黎夏:你的也好玩
3个月前
黎夏
怎么做一个好玩的博客呢[smilies7...
3个月前
源源走丢了
@黎夏:😎欢迎~
3个月前
黎夏
学习,学习
3个月前
2973371522
个人介绍挺丰富的,又带着个性😏
9个月前
源源走丢了
@穆棱洲:快一年了才来打卡?💔💔💔
9个月前
穆棱洲
无可奈何花落去,似曾相识燕归来。 沉舟...
9个月前
源源走丢了
句句不提原神,句句与原神有关💖
1年前
评论排行

下载文件并保留原路径到本地脚本Python、Shell

源源走丢了 · 3个月前
2024-1-13 · 杂七杂八 · 117 · 0

记一下、记一下,免得又到处找。

Python脚本,进行了一下修改,读取同级目录中的url.txt文本,文本里一行一个资源地址。这样一来就可以在本机运行了。

# coding:utf-8
import requests
import os
import re

class ImgDownloader(object):

    # 文件下载(单图多图通用)
    def downloader(self, urls):
        if urls is not None and type(urls)!=str and len(urls) > 0:
            for url in urls:
                self.img_downloader(url)
        elif urls is not None and type(urls)==str and len(urls) > 0:
            self.img_downloader(urls)
        else:
            return

    # 文件下载(单图)
    def img_downloader(self, url):
        try:
            r = requests.get(url=url)
        except:
            print(404)
            return -1
        try:
            path_name, path, name = self._path_name(url)
            if not os.path.exists(path): # 判断路径是否存在
                os.makedirs(path, mode=0o755) # 不在则创建
            # os.chdir(path) # 打开路径文件
            with open(path_name, 'wb') as f:
                f.write(r.content)
        except:
            print(403)
            return -1

    # 文件下载(多图)
    def imgs_downloader(self, urls):
        if urls is None or len(urls) == 0:
            return
        for url in urls:
            self.img_downloader(url)

    def _path_name(self, url):
        name = url.split("/")[-1]
        reobj1 = re.compile(r'''(?xi)\A
        ([a-z][a-zA-Z0-9+\-.]*:(//[^/?#]+)?)?
        ([a-zA-Z0-9\-._~%!$&'()*+,;=:@/]*)''')
        match = reobj1.search(url)
        if match:
            path_name = match.group(3).strip('/')
            path = match.group(3).rstrip(name).strip('/')
            return path_name, path, name
        else:
            return path_name, '', name


if __name__=="__main__":
    # 打开当前目录下的 url.txt 文件
    with open("url.txt", "r") as file:
        # 读取文件中的所有行,每行一个 URL
        root_url = tuple(line.strip() for line in file)
    # 创建 ImgDownloader 实例
    obj_spider = ImgDownloader()
    # 调用 downloader 方法下载图片
    obj_spider.downloader(root_url)

shell版本的放Linux里面运行,还得开虚拟机,占空间还麻烦,下完事还得再往物理机上下一次,Windows好像可以有办法运行sh来着,忘了,算了,不重要。

#!/bin/bash
# desc: download resource
# author: 十年后的卢哥哥
mydir=`pwd`
while read line
do
{
    if [ -n "$line" ]
    then
        cd $mydir
        url=$(echo "$line" | tr -d '\r')
        picdir=$(echo $url | sed -r 's/http:\/\///g')
        picname=$(echo ${picdir##*/})
        picpath=$(echo ${picdir%/*})
        mkdir -p $picpath
        cd $picpath
        wget -O $picname `echo $url`
    fi
}
done < $1
exit 0

sh运行方法是:sh download.sh url.txt。

有这个东西真是帮了我大忙啊!以后工作效率直接一整个拉满😁

参考文献:图片下载保留原路径(Python)

参考文献:Shell脚本实现批量下载资源并保留原始路径

January 13,2024 22:47:13
阅读117
撰写评论
人生而自由,却无往不在枷锁中。
00后 自由 晒不黑 游戏 学习ing 成长ing 白羊座
文章
29
微语
85
评论
22
人生成就

源源的人生成就