我正在尝试创建一个Python函数,它的作用与wget命令相同:
wget -c --read-timeout=5 --tries=0 "$URL"
-如果下载中断,则从您停止的位置继续。
-如果超过5秒没有新数据传入,请放弃并重试。给定
这意味着它将从中途停止的地方再次尝试。
-永远重试。
在串联中使用的这三个参数会导致下载不会失败。
我想在我的Python脚本中复制这些功能,但我不知道从哪里开始...
发布于 2014-06-22 08:45:35
urllib.request
应该行得通。只需在while(未完成)循环中设置它,检查本地文件是否已经存在,如果它确实发送带有RANGE标头的GET,则指定您下载本地文件的距离。确保使用read()附加到本地文件,直到出现错误。
这也可能是
Python urllib2恢复下载在网络重新连接时不起作用
发布于 2015-02-04 12:15:07
还有一个不错的Python模块,名为
这非常容易使用。请记住,该包自2015年以来一直没有更新,并且没有实现许多重要功能,因此使用其他方法可能会更好。这完全取决于您的用例。对于简单的下载,这个模块就是工单。如果你需要做更多的事情,还有其他的解决方案。
>>> import wget
>>> url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download(url)
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
尽情享受吧。
但是,如果
不起作用(我在处理某些PDF文件时遇到问题),请尝试
此解决方案
..。
编辑:
您还可以使用
参数以使用自定义输出目录而不是当前工作目录。
>>> output_directory =
>>> filename = wget.download(url, out=output_directory)
>>> filename
'razorback.mp3'
发布于 2014-06-22 10:44:55
import urllib2
import time
max_attempts = 80
attempts = 0
sleeptime = 10 #in seconds, no reason to continuously try if network is down
#while true: #Possibly Dangerous
while attempts < max_attempts:
time.sleep(sleeptime)
try:
response = urllib2.urlopen("http://example.com", timeout = 5)
content = response.read()
f = open( "local/index.html", 'w' )
f.write( content )
f.close()
break
except urllib2.URLError as e:
attempts += 1
print type(e)
https://stackoverflow.com/questions/24346872
复制相似问题