我要尝试下载的文件大小约为8gb,网址为:www.cs.jhu.edu/~anni/ALNC/030314corpus.splittoklc.tgz
但是,服务器每隔几秒钟就会关闭我的连接,使我只能以我的连接速度下载50-90MB的文件。我也交换了ip地址,但行为相同。其他人也会发生这种情况吗?
这是我从wget
获得的输出
我想知道是否可以像wget头几次一样自动重置连接?现在不久后它就冻结了。
或者,有没有办法我可以使用wget
或python的requests
包或其他语言来收集文件的不同部分?
更新:
我在手机上尝试了此操作,尽管运行很慢,但它似乎仍然工作。为什么会发生这种情况以及如何解决的任何想法?
更新:
电话连接最终也会重置,并且由于文件太大,因此我无法完成。
答案 0 :(得分:1)
要使这一切正常工作,服务器需要支持范围请求,并以206 Partial Content
进行响应。从终端输出来看,该服务器似乎有支持。
但是,服务器每隔几秒钟就会关闭我的连接,使我只能以我的连接速度下载50-90MB的文件。我也交换了ip地址,但行为相同。其他人也会发生这种情况吗?
不,下载对我来说没有大问题。我测试过
curl www.cs.jhu.edu/~anni/ALNC/030314corpus.splittoklc.tgz > /dev/null
我想知道是否可以像wget头几次一样自动重置连接?
wget似乎已自动重试了下载。在您包含的终端输出中,似乎wget最终将“到达那里”。您可以使用wget --continue [URL]
使wget继续下载不完整的下载。
或者,有没有一种方法可以使用wget或python的request软件包或其他某种语言来收集文件的不同部分?
从wget 1.16开始,您可以使用wget --start-pos 500 [URL]
从指定位置开始下载。
您还可以使用curl -r 500-1000 [URL]
下载给定范围内的字节。
对于Python的requests
模块,按照this SO answer:
import requests
headers = {"Range": "bytes=0-100"}
r = requests.get("https://example.com/link", headers=headers)
此处用于进一步搜索的关键字应该是“范围请求”,“部分下载”,“ 206”。