使用Python Urllib,Urllib2下载文件

时间:2011-01-22 13:17:19

标签: python urllib2 urllib

我正在尝试使用urllib从网站下载文件,如本主题所述:link text

import urllib
urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")

我可以下载文件(主要是pdf),但我得到的是无法打开的损坏文件。我怀疑是因为该网站需要登录。

如何修改上述功能来处理cookie?我已经知道带有用户名和表格的表单字段的名称。密码信息。当我打印urlretrieve的返回值时,我收到如下消息:

a, b = urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")
print a, b

>> **cache-control:** no-cache, no-store, must-revalidate, s-maxage=300, proxy-revalida
te

>> **connection:** close

如果我在浏览器中输入他们的网址,我可以手动下载文件。感谢

2 个答案:

答案 0 :(得分:1)

首先urllib2实际上支持cookie并且cookie处理应该很简单,其次你可以检查你下载了哪种文件。例如。 AFAIK所有mp3都以字节“ID3”

开头
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")

答案 1 :(得分:0)

您请求的服务器可能正在寻找某些标头消息,例如User-Agent。您可以尝试通过发送其他标头来模仿浏览器行为。