目錄
1. 使用requests
2. 使用wget
3. 下載重定向的文件
6. 使用進度條進行下載
7. 使用urllib下載網頁
8. 透過代理下載
9. 使用urllib3
10. 使用Boto3從S3下載檔案
11. 使用asyncio
首頁 後端開發 Python教學 使用 Python 下載的11種姿勢,一種比一種高級

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

May 15, 2023 pm 04:31 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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
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語法簡潔,適用於多領域,庫生態系統強大。

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

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

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

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

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

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

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

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 代碼。

See all articles