从http下载音乐

时间:2014-07-15 21:54:27

标签: python download beautifulsoup python-requests

Noob在这里,假设我想从youtube.com或hypem.com等网站下载.mp3文件。我该怎么办呢?我知道如何打开一个网页(有请求),如何解析它(用漂亮的汤)。但经过这些步骤,我真的不知道该怎么做。你如何找到文件的来源?

比如说这个脚本:https://github.com/fzakaria/HypeScript/blob/master/hypeme.py

我承担了大部分内容,除了这一部分,

    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)你如何找到文件的de SOURCE?

1 个答案:

答案 0 :(得分:1)

要回答您的第一个问题,网页抓取涉及大量逆向工程。我猜是谁写了这个剧本,研究了他们搜索过的网站,并想出了这些歌曲的网址是什么样的。

关于第二个问题,基本上,在打开网址之前正在构建Request对象,以便向请求添加自定义标头(Content-Type)。

一般情况下,未征求意见,请查看requests图书馆。这比 MUCH 更简单。使用请求的上述代码将变为:

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"]

更清楚,更容易理解恕我直言。

相关问题