2013-07-11 36 views
0

我试图检索网站,并使用Python Mechanize将它们保存在本地磁盘上。问题是许多网站重定向到html/asp/php以外的链接。有没有准确的方法来检测URL的扩展名以及它将检索的文件类型?Python机械化检测下载的文件扩展名

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

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

如何准确检测浏览器在保存文件时的文件扩展名?因为它重定向

感谢堆

回答

1

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

这不太正确。它不使用HTTP重定向。问题是,微软使用JavaScript来导致浏览器下载文件。实际的文件是:

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

由于机械化不能为你运行JavaScript的,你就必须诉诸解析HTML和链接JavaScript文件。如果您只是在以同样的方式下载一个以下载文件的网站,这可能是合理的。如果你正在寻找一个通用的方法,你必须完全找到另一种方法。

浏览器就可以知道,唯一的方法是什么下载的文件是:

  1. 检查内容类型
  2. 检查路径扩展 (我不知道,如果浏览器连做2)