我正在尝试使用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
如果我在浏览器中输入他们的网址,我可以手动下载文件。感谢
答案 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。您可以尝试通过发送其他标头来模仿浏览器行为。