使用Python urllib2下载链接

时间:2014-11-18 19:52:09

标签: python html download mp3 urllib

我想从一个页面下载一个mp3,但我得到的只是html,而不是mp3本身。我正在使用的代码来自此链接:https://stackoverflow.com/a/16518224/2137668

为什么我无法获得mp3?这是一个测试示例,显示它被下载为html:http://www5.zippyshare.com/d/77609120/61098/Cleavage%20-%20Prove%20%28Original%20Mix%29%20%5bquality-dance-music.com%5d.mp3

1 个答案:

答案 0 :(得分:1)

当我尝试在网络浏览器或wget中打开该网址时,我得到了一个302重定向到http://www5.zippyshare.com/v/77609120/file.html,这当然是一个HTML页面。

许多网站会将您重定向到这样的"容器页面" (或者只是直接返回它们)当您浏览图像,歌曲和视频等内容时。这可能是为了改善您的用户体验,使其他网站更难以深入链接"他们的内容,或者让你更难以偷窃"他们的内容。

如果它是前两个中的一个,那么答案往往是微不足道的:添加一个Referer标题,指向您从中获取链接的下载页面(或者有时,添加到同一个页面上的任何内容网站 - 甚至是您正在下载的相同网址。)

如果它是第三个,他们通常会提供更多的保护。仅举一个例子,他们可能会要求您拥有一个cookie,您可以坐在下载页面上等待一个30秒的计时器,并且只有30分钟有效。

如果您对HTTP和JavaScript了解得足够好,并且不关心违反其服务条款,您通常可以对其中的每项保护进行反向工程,并为自己编写一份下载脚本,直到他们工作为止下个月改变一切,但这通常不值得做。

无论如何,鉴于这个网站被命名为zippyshare,我猜它是最后一个。这些类型的网站通过每次下载文件时向您展示广告,并通过提示您支付月费来获得直接/加速/任何下载等等来赚钱,因此他们会将各种障碍放入直接下载文件的方式,而不会看到这些广告或支付该费用。