2013-05-14 6 views
0

Im создает программу для загрузки музыки. сейчас некоторые из них находятся в селене, но я пытаюсь медленно 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, который должен позволять получать URL-адреса без веб-соскабливания. – jfs

+0

да, я закончил тем, что не понял, что спасибо! – Serial

ответ

1

Как сказано в Documentation:

urllib.urlretrieve Возвращает кортеж (имя файла, заголовки), где имя файла-й е имя локального файла , под которым объект может быть найден

Так попробуйте это в конце кода:

download_url = ("Download link") 
filename, headers = urllib.urlretrieve(download_url) 
print filename 
Смежные вопросы