我想創建一個簡單的基於Python的實用程序,它可以從網頁獲取所有下載URL並下載內容。我發現了這樣做的幾種方法,我發現的最好的方法是「urllib」。但不幸的是我的問題是我無法保存那些具有適當擴展爲網址看起來像下面,從URL中檢索文件並將其保存爲正確的擴展名
http://example.com/2w3xa75
但內容可以在不同的格式,即.MP3,.OGG等
如何識別類型並使用正確的擴展名保存這些內容。
我想創建一個簡單的基於Python的實用程序,它可以從網頁獲取所有下載URL並下載內容。我發現了這樣做的幾種方法,我發現的最好的方法是「urllib」。但不幸的是我的問題是我無法保存那些具有適當擴展爲網址看起來像下面,從URL中檢索文件並將其保存爲正確的擴展名
http://example.com/2w3xa75
但內容可以在不同的格式,即.MP3,.OGG等
如何識別類型並使用正確的擴展名保存這些內容。
的想法是提取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
,這就是爲什麼我分裂它。
您可以嘗試使用[urllib.request.urlretrieve](https://docs.python.org/dev/library/urllib.request.html#urllib.request.urlretrieve) – TheDetective
您可以將響應標題'Content -Type「設置爲正確的擴展名,假設它被設置爲文件類型而不是八位字節流。 – T4rk1n