2013-07-11 39 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)