python下载数据的各种方法
python下载数据的各种方法
上一篇我写了怎么去网站取爬取一些下载链接,还有一些自己写的python程序,主要用了request 和 urllib.request 等库,不过发现使用这些下载文件有些问题,例如不能断点传,不好下大文件,没有进度界面,没有校验等等,只适合下数量少的小文件,今天我发现有两个有用的工具来下载。
我一开始写的下载代码
import requests
import time
import urllib.request
import os
Timeout = 200 #单次超时设定
url="https://"#下载链接
File_name = url.rsplit('/', 1)[-1]
def formatFloat(num):#输出统一格式
return '{:.3f}'.format(num)
def Download_point_to_point(name,url,Timeout):
#download File, name=File, url=download address,TIMEOUT是超时时间,并返回下载状态
try:
r1 = requests.get(url, stream=True, verify=False)
total_size = int(r1.headers['Content-Length'])
except Exception as e:
error_type = e.__class__.__name__
print ('error type is:', error_type)#查看异常名称
if error_type == 'MissingSchema':
return 'link_error'
if error_type == 'ConnectionError' or error_type == 'ReadTimeout':
return 'Timeout'
if os.path.exists(name):
temp_size = os.path.getsize(name) # 本地已经下载的文件大小
else:
temp_size = 0
if temp_size == total_size:#文件大小相等
print (name+' has successful download'+ '文件大小检查')
return 'successful'
i = 0
headers = {
'Proxy-Connection':'keep-alive'}
while i < 3: #尝试三次
try:
r = requests.get(url,timeout=Timeout,stream=True, headers=headers)#TIMEOUT 设置超时