如何从python脚本获取下载视频的确切名称

时间:2017-02-27 13:18:23

标签: python urllib2

url = "http://r2---sn-pgpq5-gv8e.googlevideo.com/videoplayback?beids=%5B9452306%5D&sparams=dur%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Csource%2Cupn%2Cexpire&dur=18.250&itag=18&mime=video%2Fmp4&expire=1488221864&lmt=1417031606585030&upn=GKIFYrlNn_U&source=youtube&id=o-ADqh1mH-ZsRDFnyLkiBlBWkyMjV76jLUJ6q_ZdYUsoZ4&ratebypass=yes&pl=24&mm=31&mn=sn-pgpq5-gv8e&key=yt6&ip=91.222.120.113&signature=B3E780A72E0AA7C86D1562EE983283E7AEB0D35A.68FE2B8E21DA731E56AD6B44E658D5F61501890C&ipbits=0&ms=au&mt=1488200127&initcwndbps=3640000&mv=m&title=20+second+video"

import urllib, urlparse,time

split = urlparse.urlsplit(url)

filename = split.path.split("/")[-1]

它将文件名作为videoplayback 但它应该是20秒的视频

如何解决它

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你想从你的URL的查询字符串中提取参数title。为此,可以使用函数urlsplit。然后,可以通过属性query获取查询字符串,如下面的代码段所示。

在下一步中,有必要解析和解码查询字符串本身。虽然它可能很有诱惑力 ab initio ,但我会推荐来自同一模块的函数parse_qs。此函数返回封装查询字符串中找到的所有参数/变量的字典。但是,或者给定的参数名称可能存在多个值 - 下面的方式params['title']通常是一个列表。然而,对于有问题的URL,“20秒视频”只有一个值。

最后请注意,对于Python 3.X,有必要用from urllib.parse import parse_qs, urlsplit替换import语句。

from urlparse import parse_qs, urlsplit

url = ...

parts = urlsplit(url)
params = parse_qs(parts.query)
print(params['title'][0])