Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python下载数据(urllib、urllib2)_Python_Html_Mp3_Urllib2_Urllib - Fatal编程技术网

python下载数据(urllib、urllib2)

python下载数据(urllib、urllib2),python,html,mp3,urllib2,urllib,Python,Html,Mp3,Urllib2,Urllib,我有一个链接,直接指向mp3文件。因此,当我把它放在浏览器中时,基本上会询问我是否要下载该文件,但是当我通过以下代码对python执行相同操作时: > data = urllib2.urlopen("http://www23.zippyshare.com/d/44123087/497548/Lil%20Wayne%20ft.%20Eminem%20-%20Drop%20The%20World.mp3".read()) 我将重定向到另一个像这样的链接。因此,我得到的不是MP3数据,而是 "

我有一个链接,直接指向mp3文件。因此,当我把它放在浏览器中时,基本上会询问我是否要下载该文件,但是当我通过以下代码对python执行相同操作时:

> data = urllib2.urlopen("http://www23.zippyshare.com/d/44123087/497548/Lil%20Wayne%20ft.%20Eminem%20-%20Drop%20The%20World.mp3".read())
我将重定向到另一个像这样的链接。因此,我得到的不是MP3数据,而是

"http://www23.zippyshare.com/v/44123087/file.html"

有什么想法吗?
谢谢

您的链接重定向到HTML网页,很可能是因为您的下载请求超时了。这些下载网站通常就是这样工作的:你永远不会得到一个静态的下载链接,只有一个临时分配的链接

我的猜测是,没有办法得到静态链接使用该网站。你必须知道那份文件是从哪里来的


所以,你的python代码没有问题;只有您的源代码。

urllib2透明地处理重定向。当服务器呈现这样的重定向并允许您下载时,您可能希望看到它实际上在做什么。您可能希望重定向处理程序并查看标头的哪个属性为您提供url,然后使用urlretrieve下载该url

设置cookies,显式地尝试可能也是一个很好的尝试

import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.open('yourmp3filelink')

sh0w u5 t3h c0d3z,l33t h4x0R。您可能没有处理cookies?我使用urllib2,它应该会自动处理cookies,但我不太确定!确实如此,但这需要一点努力。你至少要告诉它这就是你想要的。为urllib2 Cookieli做一点谷歌搜索。我刚刚尝试了一段代码,其中一个家伙发布了,但没有成功,谢谢anyways@patrick佩里尼:但为什么我在使用浏览器时它能工作呢?这是我不明白的部分!!因为你已经访问了该网站,并且临时指定的链接对你仍然有好处。一旦会话/cookie(不管是什么情况)过期,链接将停止工作。从技术上讲,你可以用python做同样的事情(通过改变cookies),但是它不可靠,不可重复,不可扩展,也不可移植。你最好只点击链接。我在2小时前得到了链接,它在我的所有浏览器(firefox、chrome和explorer)上都可以正常工作,但它不适用于urllib而不是urllib2!如果我要处理urllib2 cookielib,我不太确定该用什么!你能给我举个简单的例子吗:)事实上,如果它能在你所有的浏览器上运行,那么它就是一个会话。意思是服务器端,意思是你不能影响它。试着让python浏览HTML,找到一个可以尝试的新链接。这就是你所能做的。好吧,这就是我一直在做的,但仍然不是快乐!无论如何,谢谢我尝试了代码,但没有成功,我也会给这个子类一个快照,看看curl在给出url时做了什么。