首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从http下载音乐

从http下载音乐
EN

Stack Overflow用户
提问于 2014-07-15 21:54:26
回答 1查看 84关注 0票数 0

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

让我们以这个脚本为例:https://github.com/fzakaria/HypeScript/blob/master/hypeme.py

我明白,除了这个部分,

代码语言:javascript
复制
    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"]

首先,他是如何发现这个网址能为这首歌服务?

代码语言:javascript
复制
"http://hypem.com/serve/source/{}/{}".format(id, key)

还有这条线,不知道它是做什么的:

代码语言:javascript
复制
request = urllib2.Request(serve_url, "" , {'Content-Type': 'application/json'})

所以我的问题是,如果文件不是要下载的,你在哪里找到下载文件的链接或信息?(例如: youtube)你是如何找到这个文件的来源的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-15 23:19:25

要回答你的第一个问题,网络抓取涉及很多反向工程。我猜是谁写的剧本,研究了网站,他们是刮,并找出歌曲的网址是什么样子。

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

将军,没有征求意见,请看一下请求库.这是,比urllib更容易使用。使用请求的上述代码将成为:

代码语言:javascript
复制
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"]

要理解IMHO要干净得多,也更简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24768862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档