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?
答案 0 :(得分:1)
要回答您的第一个问题,网页抓取涉及大量逆向工程。我猜是谁写了这个剧本,研究了他们搜索过的网站,并想出了这些歌曲的网址是什么样的。
关于第二个问题,基本上,在打开网址之前正在构建Request
对象,以便向请求添加自定义标头(Content-Type
)。
一般情况下,未征求意见,请查看requests图书馆。这比
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"]
更清楚,更容易理解恕我直言。