2017-02-27 29 views
0
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秒的視頻如何從python腳本下載視頻的確切名稱

如何解決呢

+0

我認爲你正在尋找['parse_qs'(https://docs.python.org/3.5/library/urllib.parse.html#urllib.parse.parse_qs)'(URL) '標題']' –

回答

1

如果我理解你正確地質疑,您想從URL的查詢字符串中提取參數title。爲了做到這一點,可以使用功能urlsplit。查詢字符串可通過屬性query獲得,如下面的代碼片段所示。

在下一步,有必要解析和解碼查詢字符串本身。儘管從頭開始可能會很誘人,但我會推薦來自同一模塊的功能parse_qs。該函數返回一個封裝查詢字符串中找到的所有參數/變量的字典。但是,或給定的參數名稱,可能存在多個值 - 下面的方式params['title']通常是一個列表。儘管如此,對於有問題的網址,「20秒視頻」只有一個值。

最後,請注意,對於Python 3.X,需要用from urllib.parse import parse_qs, urlsplit替換導入語句。

from urlparse import parse_qs, urlsplit 

url = ... 

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

但它不適用於zip文件等 – ashish

+0

@ashish zip文件? – ewcz

+3

儘管此代碼段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – DimaSan