2016-05-17 46 views
2

我想验证一个网址是视频原始文件链接或没有,例如视频原始文件的链接:蟒蛇 - 验证URL是不urllib.request.urlopen

http://hidden_path/video_name.mp4

下面是我当前的代码:

def is_video(url): 
    r = None 
    try: 
     r = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})) 
    except: 
     return False 
    content_type = r.getheader("Content-Type") 
    if re.match("video*", content_type): 
     return True 
    return False 

这段代码有问题,如果视频的网址是一个大的视频,它可能会导致服务器超时错误。

有没有更好的方法?

+0

可以为一个HTTP下载头的工作检查? – techydesigner

回答

2

如果您只想检查标头的Content-Type,则可以发送HEAD请求而不是GET

一旦您从HEAD请求获得响应,您可以在Content-Type标题中检查video标题,如上所述。

例子:

>>> req = urllib.request.Request(url, method='HEAD', headers={'User-Agent': 'Mozilla/5.0'}) 
>>> r = urllib.request.urlopen(req) 
>>> r.getheader('Content-Type') 
'video/mp4' 
0

希望这样做它

import mimetypes 
url = 'http://media.theaterchurch.com/podcast/video/hd/720p/2016/05-08-16-720p.mp4' 
print mimetypes.MimeTypes().guess_type(url)[0] 

输出这...

video/mp4