按照地址列表批量下载文件
时间: 2023-08-27 15:03:51 浏览: 37
好的,您可以使用 Python 的 requests 库来实现下载功能。以下是一个简单的示例代码:
```python
import requests
# 读取地址列表文件
with open('url_list.txt', 'r') as f:
url_list = f.readlines()
# 遍历地址列表并下载文件
for url in url_list:
url = url.strip() # 去除字符串两端的空格和换行符
filename = url.split('/')[-1] # 提取文件名
try:
# 发送 GET 请求并下载文件
response = requests.get(url)
with open(filename, 'wb') as f:
f.write(response.content)
print(f'{filename} 下载完成')
except requests.exceptions.RequestException as e:
print(f'{filename} 下载失败:{e}')
```
您只需要将地址列表保存到 `url_list.txt` 文件中,并将文件保存到与 Python 脚本相同的目录下,然后运行以上代码即可。需要注意的是,该示例代码只适用于下载小文件,如果需要下载大文件,建议使用 `stream` 方式下载,并分块写入文件,以避免内存占用过大。
相关问题
python批量通过aria2下载列表文件
你可以使用 `aria2p` 库来编写 Python 脚本批量下载 aria2 列表文件中的所有资源。以下是一个简单的示例代码:
```python
import aria2p
# 创建 Aria2RPC 对象
client = aria2p.Client(aria2p.APIOptions(
host='<你的 aria2 服务器地址>',
port=<aria2 服务器端口号>,
secret='<你的 aria2 RPC 密钥>'
))
# 读取 aria2 列表文件
with open('<aria2 列表文件路径>', 'r') as f:
lines = f.readlines()
# 批量添加下载任务
for line in lines:
url = line.strip()
if url.startswith('#') or not url:
continue
download = client.add(url)
print('添加下载任务:', download.gid)
# 等待所有下载任务完成
for download in client.get_downloads():
download.wait(10)
print('下载任务完成:', download.gid)
```
在代码中,我们首先通过 `aria2p` 库创建了一个 `Aria2RPC` 客户端对象 `client`,并传入了 aria2 服务器的地址、端口号和 RPC 密钥等参数。接着,我们读取了指定的 aria2 列表文件,并逐行解析其中的 URL,通过 `client.add()` 方法将其添加到下载队列中。最后,我们遍历所有下载任务,等待其完成,并输出下载任务的 gid。
你只需要将代码中的 `<你的 aria2 服务器地址>`、`<aria2 服务器端口号>`、`<你的 aria2 RPC 密钥>`、`<aria2 列表文件路径>` 替换成你自己的参数,并运行 Python 脚本即可。注意,为了让代码更加健壮,你可以在添加任务时对 URL 进行一些基本的校验,比如忽略以 `#` 开头的注释行和空行等。
python批量通过aria2下载列表文件 并保存到指定地址
要将下载的文件保存到指定地址,可以在添加下载任务时指定 `dir` 参数,即下载保存的目录。
以下是修改后的代码示例:
```python
import os
import aria2p
# 创建 Aria2RPC 对象
client = aria2p.Client(aria2p.APIOptions(
host='<你的 aria2 服务器地址>',
port=<aria2 服务器端口号>,
secret='<你的 aria2 RPC 密钥>'
))
# 读取 aria2 列表文件
with open('<aria2 列表文件路径>', 'r') as f:
lines = f.readlines()
# 批量添加下载任务
for line in lines:
url = line.strip()
if url.startswith('#') or not url:
continue
filename = os.path.basename(url)
download = client.add(url, {'dir': '<下载保存的目录>'})
print('添加下载任务:', download.gid, filename)
# 等待所有下载任务完成
for download in client.get_downloads():
download.wait(10)
print('下载任务完成:', download.gid)
```
在代码中,我们在添加下载任务时,指定了 `dir` 参数,该参数指定下载保存的目录。你只需要将 `<下载保存的目录>` 替换成你自己想要保存的目录,即可将下载的文件保存到指定的目录中。
此外,我们还获取了 URL 中的文件名,并在输出时一同输出,以便于查看下载进度。