编写网络爬虫程序,实现支持断点续传的网络文件下载功能。 https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.2.4/spark-3.2.4-bin-hadoop2.7.tgz
时间: 2024-06-08 22:09:44 浏览: 90
实现断点续传,有需要的可以下载
这里提供一个 Python 3 实现的简单网络爬虫程序,支持断点续传的网络文件下载功能:
```python
import os
import requests
url = "https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.2.4/spark-3.2.4-bin-hadoop2.7.tgz"
filename = url.split("/")[-1]
chunk_size = 1024 * 1024 # 1 MB
headers = {}
if os.path.exists(filename):
filesize = os.path.getsize(filename)
headers["Range"] = f"bytes={filesize}-"
response = requests.get(url, headers=headers, stream=True)
if response.status_code == 200:
with open(filename, "wb") as f:
for chunk in response.iter_content(chunk_size=chunk_size):
f.write(chunk)
print(f"Downloaded {f.tell() / 1024 / 1024:.2f} MB")
elif response.status_code == 206:
with open(filename, "ab") as f:
for chunk in response.iter_content(chunk_size=chunk_size):
f.write(chunk)
print(f"Downloaded {(f.tell() + filesize) / 1024 / 1024:.2f} MB")
print("Download complete!")
```
该程序使用 requests 库进行网络请求,实现了断点续传功能。在程序运行时,会先检查当前目录下是否存在要下载的文件,如果存在,则通过 HTTP 请求头中的 Range 字段指定下载范围,从上次下载的位置开始继续下载;如果不存在,则从头开始下载文件。下载过程中,每下载 1 MB 的数据就会打印一条进度信息。下载完成后,程序会输出 "Download complete!"。
阅读全文