2014-07-15 75 views
0

Noob here,假設我想從網站(如youtube.com或hypem.com)下載.mp3文件。我該如何解決它?我知道如何打開一個網頁(有請求),如何解析它(用美麗的湯)。但是經過這些步驟,我真的不知道該怎麼做。你如何找到文件的源文件?從http下載音樂

我們先來說說這個爲例腳本:https://github.com/fzakaria/HypeScript/blob/master/hypeme.py

我undertand大部分除了這部分,

serve_url = "http://hypem.com/serve/source/{}/{}".format(id, key) 
    request = urllib2.Request(serve_url, "" , {'Content-Type': 'application/json'}) 
    request.add_header('cookie', cookie) 
    response = urllib2.urlopen(request) 
    song_data_json = response.read() 
    response.close() 
    song_data = json.loads(song_data_json) 
    url = song_data[u"url"] 

首先,他是怎麼發現這個網址將成爲這首歌?

"http://hypem.com/serve/source/{}/{}".format(id, key) 

再有就是這一行,不知道它是什麼:

request = urllib2.Request(serve_url, "" , {'Content-Type': 'application/json'}) 

所以我的問題,你在哪裏找到的鏈接或信息,下載一個文件,如果它不意味着下載? (例如:youtube)你如何找到文件的源文件?

回答

1

要回答你的第一個問題,網絡抓取涉及很多逆向工程。我猜猜誰寫了這個劇本,研究了他們所在的網站,並找出了這些歌曲的網址是什麼樣的。

至於你的第二個問題,基本上,一個Request對象正在打開之前打開url爲了添加自定義標題(Content-Type)到請求。

一般情況下,不要求建議,看看requests庫。這是很多比urllib更容易使用。上述代碼使用請求將成爲:

import requests 

serve_url = "http://hypem.com/serve/source/{}/{}".format(id, key) 
# cookies is a simple key/value dictionary 
response = requests.get(serve_url, headers={'Content-Type': 'application/json'}, cookies=cookies) 
song_data = response.json() 
url = song_data[u"url"] 

更清晰和更容易理解恕我直言。

+0

感謝您的回答,請看看。我來過「小提琴手」。有了它,我已經能夠看到文件的來源。有沒有其他方法可以找到它? – Saimu