本文目录导读:

我来介绍几种批量下载网络资源的方法,根据不同的场景选择适合的工具:
wget(Linux/Mac/Windows)
最经典的下载工具,适合批量下载:
# 从文件列表下载 wget -i urls.txt # 递归下载整个网站 wget -r -l 2 -np http://example.com/files/ # 限速下载,避免被封 wget --limit-rate=200k -i urls.txt
Python脚本(通用方案)
基本批量下载
import requests
from pathlib import Path
import time
def batch_download(urls, save_dir="downloads"):
save_path = Path(save_dir)
save_path.mkdir(exist_ok=True)
for idx, url in enumerate(urls, 1):
try:
response = requests.get(url, timeout=30)
filename = url.split("/")[-1] or f"file_{idx}"
filepath = save_path / filename
with open(filepath, 'wb') as f:
f.write(response.content)
print(f"✓ 已下载: {filename}")
time.sleep(1) # 避免请求过快
except Exception as e:
print(f"✗ 下载失败 {url}: {e}")
# 使用示例
urls = [
"https://example.com/file1.pdf",
"https://example.com/file2.jpg",
# ...
]
batch_download(urls)
带进度条和重试
import requests
from tqdm import tqdm
from concurrent.futures import ThreadPoolExecutor
def download_file(url, save_path, retries=3):
for attempt in range(retries):
try:
response = requests.get(url, stream=True, timeout=30)
total_size = int(response.headers.get('content-length', 0))
with open(save_path, 'wb') as f, tqdm(
desc=save_path.name,
total=total_size,
unit='B',
unit_scale=True
) as pbar:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
pbar.update(len(chunk))
return True
except:
if attempt == retries - 1:
return False
# 多线程批量下载
def batch_download_multi(urls, max_workers=5):
with ThreadPoolExecutor(max_workers=max_workers) as executor:
futures = []
for url in urls:
filename = url.split("/")[-1]
save_path = Path("downloads") / filename
future = executor.submit(download_file, url, save_path)
futures.append(future)
curl(Linux/Mac)
适合需要处理cookie和认证的场景:
# 从文件列表下载 xargs -n 1 curl -O < urls.txt # 带cookie下载 curl -b cookies.txt -O "http://example.com/file[1-10].pdf" # 断点续传 curl -C - -O "http://example.com/large_file.zip"
aria2(高速下载)
Windows/Linux/Mac都支持,支持多线程:
# 从文件列表下载 aria2c -i urls.txt # 多线程下载单个文件 aria2c -x 16 -s 16 "http://example.com/large_file.zip" # 带参数批量下载 aria2c --max-concurrent-downloads=5 --max-connection-per-server=16 -i urls.txt
针对特定网站的工具
下载图片
import requests
from bs4 import BeautifulSoup
import re
def scrape_images(url, save_dir="images"):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有图片链接
img_tags = soup.find_all('img')
urls = []
for img in img_tags:
src = img.get('src')
if src and src.endswith(('.jpg', '.png', '.gif')):
if not src.startswith('http'):
src = url + src
urls.append(src)
batch_download(urls, save_dir)
下载YouTube视频
# 使用youtube-dl youtube-dl --batch-file video_urls.txt youtube-dl -f best -o "%(title)s.%(ext)s" https://www.youtube.com/watch?v=... # 或使用yt-dlp(更活跃) yt-dlp -f "bestvideo+bestaudio" --merge-output-format mp4 "https://..."
批量下载技巧
生成URL列表
# 按规律生成URL
base_url = "http://example.com/files/"
download_urls = [f"{base_url}file_{i:03d}.pdf" for i in range(1, 101)]
处理需要登录的资源
session = requests.Session()
session.post("https://example.com/login",
data={"username": "user", "password": "pass"})
# 使用session下载
for url in urls:
response = session.get(url)
# 处理文件...
下载管理类脚本
创建 downloader.py 文件,包含完整功能:
- 进度显示
- 错误重试
- 断点续传
- 并发控制
- 日志记录
选择建议:
- 简单场景:
wget或aria2 - 需要定制:Python + requests
- 视频为主:youtube-dl 或 yt-dlp
- 高速下载:aria2(支持多线程)
⚠️ 注意:下载资源时请遵守版权法规,只在授权范围内下载。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播