一、簡介
在現代網路環境下,我們經常需要通過網路下載文件。如果需要下載的文件數量較少,手動下載可以很快地實現。但是,如果需要下載的文件數量眾多,手動去下載每個文件則會非常耗費時間和精力。因此,本文將介紹如何使用Python實現批量下載文件。
以往的批量下載都是直接下載鏈接中的文件,但是針對大多數網站而言,這種方法屬於非法下載,在一些比較小眾的下載需求中,使用HTTP請求來下載文件是一種不錯的選擇,那麼本文介紹一種使用此方式來批量下載文件的方法。
二、下載單個文件
在下載前首先得到要下載的文件的下載鏈接,那麼怎樣使用Python通過這個下載鏈接來實現下載一個文件呢?下面是Python代碼實現:
import requests url = "https://example.com/test.png" #需要下載的文件鏈接 r = requests.get(url) with open("test.png", "wb") as file: #以二進位寫的形式打開文件 file.write(r.content)#寫入
具體實現就是使用requests庫的get方法來獲取包含文件內容的響應,然後使用Python的文件操作,將文件內容寫入二進位文件中。
三、批量下載文件
1.獲取下載鏈接
對於批量下載,其實最重要的是如何獲取到所有文件對應的下載鏈接。我們可以藉助Python中的beautifulsoup庫和requests庫來獲取這些鏈接。
beautifulsoup庫可以很方便地對HTML和XML文檔進行解析,我們可以通過手動解析網站HTML文檔來獲取其中包含在標籤中的下載鏈接。
例如,我們想要下載來自Unsplash上的圖片,可以通過如下代碼獲取圖片下載鏈接:
import requests from bs4 import BeautifulSoup url = "https://unsplash.com/" r = requests.get(url) soup = BeautifulSoup(r.content) links = [] for link in soup.find_all("a"): if "download" in link.attrs.get("href"): links.append(link.attrs.get("href")) print(links)
該代碼會獲取Unsplash網站中所有包含」download」屬性的鏈接,也就是所有圖片的下載頁面鏈接。
2.下載文件
獲取到了所有文件的下載鏈接之後,我們就可以使用之前講述的單文件下載的方法來下載每個文件。同時,我們也可以將獲取鏈接和下載操作整合到同一個文件中,實現批量下載。
import requests from bs4 import BeautifulSoup url = "https://unsplash.com/" r = requests.get(url) soup = BeautifulSoup(r.content) links = [] for link in soup.find_all("a"): if "download" in link.attrs.get("href"): links.append(link.attrs.get("href")) filename = link.attrs.get("href").split("/")[5] #獲取文件名 response = requests.get(url+link.attrs.get("href")) with open(filename, "wb") as file: file.write(response.content) print(f"{filename}下載成功!")
該代碼會遍歷所有下載鏈接,從中獲取文件名並下載文件,結果會在命令行中顯示。
總結
本文通過Python的request庫和beautifulsoup庫的使用,演示了如何獲取文件下載鏈接和實現批量下載。希望本文對於你實現批量下載有所幫助。
原創文章,作者:MBDU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133893.html