2013-05-14 102 views
0

我創建一個程序來下載音樂。現在有一些是在硒,但即時嘗試緩慢s =完全改爲urllib,但我卡在下載部分。當我運行它,它工作正常,但我不明白的下載的歌曲使用urllib下載

這裏是我的代碼:

import urllib2, urllib, urllister 
import time 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

raw_i=raw_input("Search: ") 
x = urllib.quote_plus(raw_i) 

site1 = urllib2.urlopen(' Youtube Search Link ') 
y = site1.read() 
parser = urllister.URLLister() 
parser.feed(y) 

parser.close() 


for url in parser.urls: 
    if "watch?v=" in url: 
     v = url 

     break 


vid = ("youtube link %s"%v) 

driver = webdriver.Chrome() 
driver.get("Youtube to Mp3 link") 


elem = driver.find_element_by_id("youtube-url") 
elem.clear() 
elem.send_keys(vid) 
elem.send_keys(Keys.RETURN) 
time.sleep(5) 
download = driver.page_source 

parser = urllister.URLLister() 
parser.feed(download) 
parser.close 
driver.quit() 

for url in parser.urls: 
    if "/get?video_id" in url: 
     down = url 

download_url = ("Download link") 
urllib.urlretrieve(download_url) 

就像我說我沒有得到一個錯誤消息,但我不能找到我下載的歌曲

+1

'urlretreive()'接受一個文件名作爲第二個參數。 YouTube上的API應該允許在沒有網頁抓取的情況下獲取網址。 – jfs

+0

是的,我結束了這樣做,生病看看,謝謝! – Serial

回答

1

Documentation說:

urllib.urlretrieve 返回的元組(文件名,標頭),其中文件名是第Ë本地文件 名下該對象可以發現

因此,在你的代碼的最後試試這個:

download_url = ("Download link") 
filename, headers = urllib.urlretrieve(download_url) 
print filename