0

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

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

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

如何在保存文件时像浏览器一样准确检测 aa 文件扩展名?

非常感谢

4

1 回答 1

1

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

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

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

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

浏览器知道下载文件的唯一方法是:

  1. 检查内容类型
  2. 检查路径扩展名(我不确定浏览器是否会做 2。)
于 2013-07-11T04:14:57.530 回答