python 网页下载附件,没有后缀名该怎么办

任务:访问的网站有附件,要下载附件。python语言
问题:有两种情况,
第一种情况是取不到后缀名,如http://www.gzsjzyxh.cn/news_d...,附件链接可以获取到,但没有后缀名,在本地写的时候就是个没有后缀名的文件,不能判断是什么类型的文件;
第二种情况是附件链接上的后缀名和实际文件类型不一样,如http://www.gzsjzyxh.cn/news_d...,附件链接的后缀名明明是zip,但下下来后附件是xls。

以前碰到的,都是附件链接跟着后缀名的。常用的下载方式,无论是requests还是urllib2,都是先访问附件链接,然后将内容写到本地,但现在能访问这个附件链接,写本地这个步骤却没有写明后缀名,就下了个没类型的文件,对后面的操作有影响。
不知道有没有大神知道该怎么操作,或是知道这样奇怪的链接访问获取到相应类型的文件是怎么个原理么?

阅读 9.9k
2 个回答

如果你抓包就会发现链接头部是有后缀名的:
r=requests.head(url)
print r.headers['Content-Disposition']
返回attachment; filename="2015年度贵州省建筑业企业优秀项目经理名单.xls"

你可以试一下用unix的wget下载后找增加的文件名。这样就能找到正确的后缀。

如果一定要纯python实现的话,你可以试一下wget包

>>> import wget
>>> url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download(url)
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题