目錄
1. 使用requests
2. 使用wget
3. 下載重定向的文件
要下載這個pdf文件,請使用以下程式碼:
現在,使用以下程式碼行取代for迴圈:
6. 使用進度條進行下載
考慮以下程式碼:
7. 使用urllib下載網頁
以下程式碼行可以輕鬆地下載一個網頁:
8. 透過代理下載
9. 使用urllib3
匯入以下模組:
現在,我們像這樣來初始化URL字串變數:
建立一個文件:
10. 使用Boto3從S3下載檔案
在開始之前,你需要使用pip安裝awscli模組:
對於AWS配置,請執行以下命令:
現在,按以下命令輸入你的詳細資料:
現在,導入這兩個模組:
在從Amazon下載檔案時,我們需要三個參數:
初始化變數:
11. 使用asyncio
首頁 後端開發 Python教學 使用Python下載的11種姿勢,一種比一種高級

使用Python下載的11種姿勢,一種比一種高級

Apr 11, 2023 pm 03:22 PM
python 文件 程式碼

使用Python下載的11種姿勢,一種比一種高級

最後,你將學習如何克服可能遇到的各種挑戰,例如下載重定向的檔案、下載大型檔案、完成一個多執行緒下載以及其他策略。

1. 使用requests

你可以使用requests模組從一個網址下載檔。

考慮以下程式碼:

使用Python下載的11種姿勢,一種比一種高級

你只需使用requests模組的get方法取得URL,並將結果儲存到一個名為「myfile」的變量中。然後,將這個變數的內容寫入檔案。

2. 使用wget

使用Python下載的11種姿勢,一種比一種高級

你也可以使用Python的wget模組從一個URL下載檔案。你可以使用pip按以下指令安裝wget模組:

考慮以下程式碼,我們將使用它下載Python的logo映像。

使用Python下載的11種姿勢,一種比一種高級

在這段程式碼中,URL和路徑(映像會儲存在其中)被傳遞給wget模組的download方法。

3. 下載重定向的文件

在本節中,你將學習如何使用requests從一個URL下載文件,該URL會被重定向到另一個帶有一個.pdf文件的URL。該URL看起來如下:

使用Python下載的11種姿勢,一種比一種高級

要下載這個pdf文件,請使用以下程式碼:

使用Python下載的11種姿勢,一種比一種高級

##在這段程式碼中,我們第一步指定的是URL。然後,我們使用request模組的get方法來取得該URL。在get方法中,我們將allow_redirects設為True,這將允許URL中的重定向,並且重定向後的內容將被指派給變數myfile。

最後,我們開啟一個檔案來寫入所獲取的內容。

4. 分塊下載大檔案

考慮下面的程式碼:

使用Python下載的11種姿勢,一種比一種高級

#首先,我們像以前一樣使用requests模組的get方法,但這一次,我們將把stream屬性設為True。

接著,我們在目前工作目錄中建立一個名為PythonBook.pdf的文件,並開啟它進行寫入。

然後,我們指定每次要下載的區塊大小。我們已經將其設定為1024字節,接著遍歷每個區塊,並在檔案中寫入這些區塊,直到區塊結束。

不漂亮嗎?別擔心,稍後我們將顯示一個下載過程的進度條。

5.下載多個文件(並行/批次下載)

要同時下載多個文件,請匯入以下模組:

使用Python下載的11種姿勢,一種比一種高級

#我們導入了os和time模組來檢查下載檔案需要多少時間。 ThreadPool模組允許你使用池來執行多個執行緒或進程。

讓我們建立一個簡單的函數,將回應分塊傳送到一個檔案:

使用Python下載的11種姿勢,一種比一種高級

#這個URL是一個二維數組,它指定了你要下載的頁面的路徑和URL。

使用Python下載的11種姿勢,一種比一種高級

就像在前一節中所做的那樣,我們將這個URL傳遞給requests.get。最後,我們開啟檔案(URL中指定的路徑)並寫入頁面內容。

現在,我們可以分別為每個URL呼叫這個函數,我們也可以同時為所有URL呼叫這個函數。讓我們在for迴圈中分別為每個URL呼叫這個函數,注意計時器:

使用Python下載的11種姿勢,一種比一種高級#

現在,使用以下程式碼行取代for迴圈:

使用Python下載的11種姿勢,一種比一種高級

執行該腳本。

6. 使用進度條進行下載

進度條是clint模組的一個UI元件。輸入以下指令來安裝clint模組:

使用Python下載的11種姿勢,一種比一種高級

考慮以下程式碼:

使用Python下載的11種姿勢,一種比一種高級

在這段程式碼中,我們首先導入了requests模組,然後,我們從clint.textui導入了進度元件。唯一的區別是在for迴圈中。在將內容寫入檔案時,我們使用了進度條模組的bar方法。

7. 使用urllib下載網頁

在本節中,我們將使用urllib下載一個網頁。

urllib函式庫是Python的標準函式庫,所以你不需要安裝它。

以下程式碼行可以輕鬆地下載一個網頁:

使用Python下載的11種姿勢,一種比一種高級

在這裡指定你想將檔案保存為什麼以及你想將它儲存在哪裡的URL 。

使用Python下載的11種姿勢,一種比一種高級

在這段程式碼中,我們使用了urlretrieve方法並傳遞了檔案的URL,以及儲存檔案的路徑。檔案副檔名將是.html。

8. 透過代理下載

如果你需要使用代理下載你的文件,你可以使用urllib模組的ProxyHandler。請看以下程式碼:

使用Python下載的11種姿勢,一種比一種高級

在這段程式碼中,我們建立了代理對象,並透過呼叫urllib的build_opener方法來開啟該代理,並傳入該代理對象。然後,我們建立請求來獲取頁面。

此外,你還可以按照官方文件的介紹來使用requests模組:

使用Python下載的11種姿勢,一種比一種高級

#你只需要匯入requests模組並建立你的代理程式物件。然後,你就可以取得文件了。

9. 使用urllib3

urllib3是urllib模組的改良版。你可以使用pip下載並安裝它:

使用Python下載的11種姿勢,一種比一種高級

我們將透過使用urllib3來取得一個網頁並將它儲存在一個文字檔案中。

匯入以下模組:

使用Python下載的11種姿勢,一種比一種高級

在處理檔案時,我們使用了shutil模組。

現在,我們像這樣來初始化URL字串變數:

使用Python下載的11種姿勢,一種比一種高級

#然後,我們使用了urllib3的PoolManager ,它會追蹤必要的連接池。

使用Python下載的11種姿勢,一種比一種高級

建立一個文件:

使用Python下載的11種姿勢,一種比一種高級

#最後,我們發送一個GET請求來取得該URL並開啟一個文件,接著將回應寫入該檔案:

使用Python下載的11種姿勢,一種比一種高級

10. 使用Boto3從S3下載檔案

要從Amazon S3下載文件,你可以使用Python boto3模組。

在開始之前,你需要使用pip安裝awscli模組:

使用Python下載的11種姿勢,一種比一種高級

#

對於AWS配置,請執行以下命令:

使用Python下載的11種姿勢,一種比一種高級

現在,按以下命令輸入你的詳細資料:

使用Python下載的11種姿勢,一種比一種高級

要從Amazon S3下載文件,你需要導入boto3和botocore。 Boto3是一個Amazon SDK,它允許Python存取Amazon web服務(如S3)。 Botocore提供了與Amazon web服務互動的命令列服務。

Botocore自帶了awscli。要安裝boto3,請執行以下命令:

使用Python下載的11種姿勢,一種比一種高級

現在,導入這兩個模組:

使用Python下載的11種姿勢,一種比一種高級

在從Amazon下載檔案時,我們需要三個參數:

  • Bucket名稱
  • 你需要下載的檔案名稱
  • 」檔案下載之後的名稱

初始化變數:

使用Python下載的11種姿勢,一種比一種高級

現在,我們初始化一個變數來使用會話的資源。為此,我們將呼叫boto3的resource()方法並傳入服務,即s3:

使用Python下載的11種姿勢,一種比一種高級

#最後,使用download_file方法下載檔案並傳入變數:

使用Python下載的11種姿勢,一種比一種高級

11. 使用asyncio

asyncio模組主要用於處理系統事件。它圍繞著一個事件循環進行工作,該事件循環會等待事件發生,然後對該事件作出反應。這個反應可以是呼叫另一個函數。這個過程稱為事件處理。 asyncio模組使用協同程序進行事件處理。

要使用asyncio事件處理和協同功能,我們將導入asyncio模組:

使用Python下載的11種姿勢,一種比一種高級

#現在,像這樣定義asyncio協同方法:

使用Python下載的11種姿勢,一種比一種高級

#關鍵字async表示這是一個原生asyncio協同程式。在協同程序的內部,我們有一個await關鍵字,它會傳回一個特定的值。我們也可以使用return關鍵字。

現在,讓我們使用協同創建一段程式碼來從網站下載一個檔案:

使用Python下載的11種姿勢,一種比一種高級

#在這段程式碼中,我們創建了一個非同步協同函數,它會下載我們的文件並返回一條訊息。

然後,我們使用另一個非同步協同程式呼叫main_func,它會等待URL並將所有URL組成一個佇列。 asyncio的wait函式會等待協同程序完成。

現在,為了啟動協同程序,我們必須使用asyncio的get_event_loop()方法將協同程序放入事件循環中,最後,我們使用asyncio的run_until_complete()方法執行該事件循環。

使用Python下載檔案是很有趣的。希望本教學對你有用!

以上是使用Python下載的11種姿勢,一種比一種高級的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

See all articles