Python机械化检测下载的文件扩展名

时间:2013-07-11 03:15:58

标签: python file download mechanize

我正在尝试使用Python Mechanize检索网站并将其保存在本地磁盘上。问题是许多网站重定向到html / asp / php以外的链接。有没有准确的方法来检测URL具有什么扩展名以及它将检索哪种类型的文件?

例如: http://www.yahoo.com 应保存为html文件。

http://www.microsoft.com/en-us/download/confirmation.aspx?id=3745 应该在重定向时保存为.exe文件,然后下载exe文件。然而,content-type被声明为text / html,所以这不是我猜的最可靠的方法。

如何在保存文件的同时准确检测浏览器的文件扩展名?

谢谢堆

1 个答案:

答案 0 :(得分:1)

  

http://www.microsoft.com/en-us/download/confirmation.aspx?id=3745   应该保存为.exe文件,因为它重定向,然后下载一个exe   文件。但是,content-type被声明为text / html,所以不是   我猜是最可靠的方法。

这不太正确。它不使用HTTP重定向。问题是Microsoft使用javascript导致浏览器下载文件。实际文件是:

http://download.microsoft.com/download/4/4/9/449b0038-ac27-4b24-bf11-dd8ebdf5cca6/sonar_setup.exe

由于mechanize无法为你运行javascript,你将不得不求助于解析链接的html和javascript文件。如果您只是抓一个以相同方式下载文件的网站,这可能是合理的。如果您正在寻找一般方法,则必须完全找到另一种方法。

浏览器可以知道下载文件的唯一方式:

  1. 检查内容类型
  2. 检查路径扩展名 (我不确定浏览器是否会做2。)