在使用 urllib2 打开 URL 并下载视频时,我遇到了一些奇怪的行为。
我正在尝试打开视频资源,这是一个示例链接:
https://zencoder-temp-storage-us-east-1.s3.amazonaws.com/o/20130723/b3ed92cc582885e27cb5c8d8b51b9956/b740dc57c2a44ea2dc2d940d93d772e2.mp4?AWSAccessKeyId=AKIAI456JQ76GBU7FECA&Signature=S3lvi9n9kHbarCw%2FUKOknfpkkkY%3D&Expires=1374639361
我有以下代码:
mp4_url = ''
#response_body is a json response that I get the mp4_url from
if response_body['outputs'][0]['label'] == 'mp4':
mp4_url = response_body['outputs'][0]['url']
if mp4_url:
logging.info('this is the mp4_url')
logging.info(mp4_url)
#if I add the line directly below this then it works just fine
mp4_url = 'https://zencoder-temp-storage-us-east-1.s3.amazonaws.com/o/20130723/b3ed92cc582885e27cb5c8d8b51b9956/b740dc57c2a44ea2dc2d940d93d772e2.mp4?AWSAccessKeyId=AKIAI456JQ76GBU7FECA&Signature=S3lvi9n9kHbarCw%2FUKOknfpkkkY%3D&Expires=1374639361'
mp4_video = urllib2.urlopen(mp4_url)
logging.info('succesfully opened the url')
当我添加指定的行时代码有效,但它给了我一个 HTTP 错误 403:当我不这样做时,它给了我一个禁止消息,这让我认为它以某种方式弄乱了 mp4_url。但令人困惑的部分是,当我检查 mp4_url 的日志行时,它正是我在那里硬编码的。有什么区别?里面是否有一些角色可能会破坏它?我尝试通过执行以下操作将其转换为字符串:
mp4_video = urllib2.urlopen(str(mp4_url))
但这并没有做任何事情。有任何想法吗?
更新:
随着使用 print repr(mp4_url) 的建议,它给了我:
u'https://zencoder-temp-storage-us-east-1.s3.amazonaws.com/o/20130723/b3ed92cc582885e27cb5c8d8b51b9956/b740dc57c2a44ea2dc2d940d93d772e2.mp4?AWSAccessKeyId=AKIAI456JQ76GBU7FECA&Signature=S3lvi9n9kHbarCw%2FUKOknfpkkkY%3D&Expires=1374639361'
而且我想不同之处在于导致错误的原因,但解析它的最佳方法是什么?
更新二:
最后我确实需要将它转换为一个字符串,但我获取链接的源(编码视频)需要将近 60 秒的延迟才能提供该 URL,这就是为什么当我硬编码时它继续工作的原因因为它有那个延迟。谢谢您的帮助!