吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 678|回复: 7
收起左侧

[资源求助] 用Python怎样编码批量下载

[复制链接]
kuchen 发表于 2025-2-27 19:44
25吾爱币
怎样用Python编码批量下载类似格式的文件?
第1个文件:http://..........com/Sound/135x4x.mp3
第2个文件:http://..........com/Sound/t47a56.mp3
.。。。。。。
sound文件夹下的文件名称没有任何规律,但是文件格式都是.mp3
请帮忙python编码学习下
谢谢!

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lyh7733 发表于 2025-2-27 20:25
问AI比在这问快一点吧?
astree 发表于 2025-2-27 20:26
你首先得有个列表吧,没有任何规律穷举的话数量有点大
 楼主| kuchen 发表于 2025-2-27 20:43
astree 发表于 2025-2-27 20:26
你首先得有个列表吧,没有任何规律穷举的话数量有点大

问过了,关键我也不知道该目录下有多少个文件?最好是先提取该目录下的文件名,生成列表,再下载

AI回答如下:
方法 1:使用 wget 或 curl + 文件列表
步骤 1:生成文件名列表
将需要下载的文件名保存到一个文本文件(如 list.txt),每行一个文件名:

plaintext
复制
xcy123.mp3
345x3.mp3
file_abc.mp3
...
步骤 2:构造下载链接
假设文件的基础 URL 是 http://example.com/audio/,则可以通过脚本将文件名拼接成完整链接。
(以下以 Linux/macOS 的 Bash 为例,Windows 可用 PowerShell 或 WSL)

bash
复制
# 生成完整链接列表
sed 's#^#http://example.com/audio/#' list.txt > urllist.txt
步骤 3:批量下载
使用 wget 或 curl 下载:

bash
复制
# 使用 wget
wget -i urllist.txt

# 使用 curl
xargs -n 1 curl -O < urllist.txt
astree 发表于 2025-2-27 20:49
kuchen 发表于 2025-2-27 20:43
问过了,关键我也不知道该目录下有多少个文件?最好是先提取该目录下的文件名,生成列表,再下载

AI回 ...

没有全部音频的结果页的话,你只靠猜去想把别人的网站文件全部下载下来?
koogg 发表于 2025-2-27 22:02
greatpeng 发表于 2025-2-28 10:19
试试八爪鱼采集器免费爬虫。https://affiliate.bazhuayu.com/ZXllMj
清风阁丶Hunter 发表于 2025-2-28 22:21
这个应该比较符合

[Python] 纯文本查看 复制代码
import requests
import os
from urllib.parse import urlparse
from bs4 import BeautifulSoup

# 场景一:已知URL列表时直接下载
def download_mp3s(url_list, save_dir='sound'):
    """已知MP3地址列表时的下载方法"""
    os.makedirs(save_dir, exist_ok=True)
    
    for url in url_list:
        try:
            # 提取文件名
            filename = os.path.basename(urlparse(url).path)
            filepath = os.path.join(save_dir, filename)
            
            # 带浏览器标识的请求
            headers = {'User-Agent': 'Mozilla/5.0'}
            response = requests.get(url, headers=headers, stream=True, timeout=10)
            response.raise_for_status()
            
            # 流式下载(适合大文件)
            with open(filepath, 'wb') as f:
                for chunk in response.iter_content(chunk_size=8192):
                    if chunk:  # 过滤保持连接的空白块
                        f.write(chunk)
            print(f'&#9989; 下载成功: {filename}')
            
        except Exception as e:
            print(f'&#10060; 下载失败 [{url}]: {str(e)}')

# 场景二:从网页抓取MP3链接后下载
def crawl_and_download(page_url, save_dir='sound'):
    """从网页抓取MP3链接并下载"""
    try:
        # 获取网页内容
        headers = {'User-Agent': 'Mozilla/5.0'}
        response = requests.get(page_url, headers=headers, timeout=10)
        response.raise_for_status()
        
        # 解析页面获取MP3链接
        soup = BeautifulSoup(response.text, 'html.parser')
        mp3_urls = []
        
        # 查找所有包含.mp3的链接
        for tag in soup.find_all(['a', 'audio', 'source']):
            url = tag.get('href') or tag.get('src')
            if url and url.endswith('.mp3'):
                full_url = requests.compat.urljoin(page_url, url)
                mp3_urls.append(full_url)
        
        # 去重处理
        mp3_urls = list(set(mp3_urls))
        print(f'&#127919; 发现{len(mp3_urls)}个MP3文件')
        
        # 调用下载函数
        download_mp3s(mp3_urls, save_dir)
        
    except Exception as e:
        print(f'&#9940; 页面抓取失败: {str(e)}')

# 使用方法示例
if __name__ == '__main__':
    # 方式一:直接使用已知URL列表
    # url_list = [
    #     'http://example.com/Sound/135x4x.mp3',
    #     'http://example.com/Sound/t47a56.mp3'
    # ]
    # download_mp3s(url_list)
    
    # 方式二:从指定网页抓取链接
    crawl_and_download('http://example.com/sound-page')
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-10-22 18:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表