使用Python Urllib和Urllib2下载文件
我正在尝试使用urllib从一个网站下载文件,具体方法可以参考这个帖子:链接文本
import urllib
urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")
我可以下载文件(大多数是pdf格式),但下载下来的文件都是损坏的,打不开。我怀疑这是因为这个网站需要登录。
我该如何修改上面的函数来处理cookies?我已经知道了包含用户名和密码信息的表单字段的名称。当我打印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
你请求的服务器可能在寻找一些特定的头部信息,比如用户代理(User-Agent)。你可以尝试模仿浏览器的行为,发送一些额外的头部信息。
1
首先,urllib2 这个库实际上是支持 cookies 的,处理 cookies 应该很简单。其次,你可以检查你下载的文件是什么类型的。例如,听说所有的 mp3 文件开头都是 "ID3" 这几个字节。
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")