这里,假设我想从一个像youtube.com或hypem.com这样的网站下载一个youtube.com文件。我该怎么做?我知道如何打开一个网页(请求),如何解析它(用漂亮的汤)。但在这一步之后,我真的不知道该怎么办了。你如何找到文件的来源?
让我们以这个脚本为例: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)你是如何找到这个文件的来源的?
发布于 2014-07-15 23:19:25
要回答你的第一个问题,网络抓取涉及很多反向工程。我猜是谁写的剧本,研究了网站,他们是刮,并找出歌曲的网址是什么样子。
至于第二个问题,基本上是在打开url之前构建一个Request对象,以便向请求中添加自定义标头(Content-Type)。
将军,没有征求意见,请看一下请求库.这是,比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"]要理解IMHO要干净得多,也更简单。
https://stackoverflow.com/questions/24768862
复制相似问题