2017-08-03 73 views
0

我想創建一個簡單的基於Python的實用程序,它可以從網頁獲取所有下載URL並下載內容。我發現了這樣做的幾種方法,我發現的最好的方法是「urllib」。但不幸的是我的問題是我無法保存那些具有適當擴展爲網址看起來像下面,從URL中檢索文件並將其保存爲正確的擴展名

http://example.com/2w3xa75

但內容可以在不同的格式,即.MP3,.OGG等

如何識別類型並使用正確的擴展名保存這些內容。

+0

您可以嘗試使用[urllib.request.urlretrieve](https://docs.python.org/dev/library/urllib.request.html#urllib.request.urlretrieve) – TheDetective

+0

您可以將響應標題'Content -Type「設置爲正確的擴展名,假設它被設置爲文件類型而不是八位字節流。 – T4rk1n

回答

1

您可以使用requestsmimetypes

的想法是提取Content-Type HTTP標頭,並要求mimetypes猜測相關的擴展。

我會用這個問題的URL爲例(它不提供擴展名)

import requests 
import mimetypes 

query = requests.get('https://stackoverflow.com/questions/45488909/retrieve-files-from-urls-and-save-those-with-correct-extension') 
content_type = query.headers['Content-Type'] 

print(mimetypes.guess_extension(content_type.split(';')[0])) 

輸出:

.html 

一個Content-Type標題是這樣的:'text/html; charset=utf-8',但只有第一部分( text/html)預計由mimetypes.guess_extension,這就是爲什麼我分裂它。

+0

它似乎在工作。但問題是我得到的擴展。我得到的輸出爲.exe。但是,如果我點擊鏈接下載是一個不同的(例如.mp3)我知道的一件事是目標網站已與微軟技術開發。任何想法? – NIK

+0

那麼,你將不得不給我你想抓取的網址,因爲我無法做任何事情,沒有 – Arount

+0

非常感謝。這是完成這件事的正確方法。但不幸的是我的問題是不同的。我正在測試這個有趣的網站似乎正在執行一個.exe來開始下載。這使得不可能從「mimetype」中獲取文件類型 – NIK

相關問題