python下載文件使用Python下載文件的簡單示例
最后,您將學習如何克服可能遇到的各種挑戰(zhàn),例如下載重定向文件、下載大型文件、完成多線程下載以及其他策略。
使用請求
您可以使用請求模塊從URL下載文件。
考慮以下守則:
import requestsurl = 'https://www.python.org/static/img/python-logo@2x.png'myfile = requests.get(url)open('c:/users/LikeGeeks/downloads/PythonImage.png', 'wb').write(myfile.content)只需使用get 方法,并將結果存儲到名為“myfile”的變量中。然后,將變量的內容寫入文件中。
使用wget
還可以使用惠特Python模塊。這個wget 可以使用PIP安裝模塊,如下所示:
pip install wget考慮下面的代碼,我們將下載Python的徽標圖像:
import wgeturl = "https://www.python.org/static/img/python-logo@2x.png"wget.download(url, 'c:/users/LikeGeeks/downloads/pythonLogo.png')在這段代碼中,URL以及路徑(圖像將在其中存儲)被傳遞給wget模塊的下載方法。
重定向的下載文件
在本節(jié)中,您將學習如何從URL下載,該URL使用請求重定向到另一個帶有.pdf文件的URL。URL內容如下:
https://readthedocs.org/projects/python-guide/downloads/pdf/latest/
要下載此pdf文件,請使用以下代碼:
import requestsurl = 'https://readthedocs.org/projects/python-guide/downloads/pdf/latest/'myfile = requests.get(url, allow_redirects=True)open('c:/users/LikeGeeks/documents/hello.pdf', 'wb').write(myfile.content)在這段代碼中,我們指定的第一步是URL。然后,我們使用請求模塊的get方法來獲取URL。在get方法中,我們設置allow_redirects到True,這將允許在URL中重定向,而重定向后的內容將分配給變量myfile.
最后,我們打開一個文件來編寫獲取的內容。
塊下載大文件
考慮以下守則:
import requestsurl = 'https://www.python.org/static/img/python-logo@2x.png'myfile = requests.get(url)open('c:/users/LikeGeeks/downloads/PythonImage.png', 'wb').write(myfile.content)首先,我們像以前一樣使用請求模塊的get方法,但這一次,我們將流屬性設置為True。
然后,我們在當前工作目錄中創(chuàng)建一個名為PythonBook.pdf的文件,并打開它進行寫入。
然后,我們指定要一次下載的塊大小。我們已經設置為1024字節(jié),遍歷每個塊,并在文件中寫入塊直到塊完成。
不漂亮?別擔心,我們稍后會顯示下載過程的進度條。
下載多個文件(并行/批量下載)
若要一次下載多個文件,請導入以下模塊:
import osimport requestsfrom time import timefrom multiprocessing.pool import ThreadPool我們導入了操作系統(tǒng)和時間模塊,以檢查下載文件所需的時間。模塊ThreadPool 允許您使用池運行多個線程或進程。
讓我們創(chuàng)建一個簡單的函數,將響應以塊的形式發(fā)送到文件:
def url_response(url):path, url = urlr = requests.get(url, stream = True)with open(path, 'wb') as f:for ch in r:f.write(ch)URL是一個二維數組,它指定要下載的頁面的路徑和URL。
urls = [("Event1", "https://www.python.org/events/python-events/805/"),("Event2", "https://www.python.org/events/python-events/801/"),("Event3", "https://www.python.org/events/python-events/790/"),("Event4", "https://www.python.org/events/python-events/798/"),("Event5", "https://www.python.org/events/python-events/807/"),("Event6", "https://www.python.org/events/python-events/807/"),("Event7", "https://www.python.org/events/python-events/757/"),("Event8", "https://www.python.org/events/python-user-group/816/")]將URL傳遞給requests.get,就像我們在上一節(jié)中所做的那樣。最后,打開文件(URL中指定的路徑)并寫入頁面的內容。
現在,我們可以對每個URL分別調用這個函數,也可以同時調用所有URL的這個函數。讓我們在for循環(huán)中分別對每個URL執(zhí)行此操作,并注意計時器:
start = time()for x in urls:url_response (x)print(f"Time to download: {time() - start}")現在,用以下代碼行替換for循環(huán):
ThreadPool(9).imap_unordered(url_response, urls)運行腳本。
用進度欄下載
進度條是客戶端模塊的UI小部件。若要安裝客戶端模塊,請鍵入以下命令:
pip install clint
考慮以下代碼:
import requestsfrom clint.textui import progressurl = 'http://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.pdf'r = requests.get(url, stream=True)with open("LearnPython.pdf", "wb") as Pypdf:total_length = int(r.headers.get('content-length'))for ch in progress.bar(r.iter_content(chunk_size = 2391975), expected_size=(total_length/1024) 1):if ch:Pypdf.write(ch)在這段代碼中,我們導入了請求模塊,然后從clint.textui導入了進度小部件。唯一的區(qū)別是for循環(huán)。我們在將內容寫入文件時使用了進度模塊的BAR方法。
使用urllib下載網頁
在本節(jié)中,我們將使用urllib下載一個網頁。
urllib庫是Python的標準庫,因此不需要安裝它。
以下代碼行可以輕松下載網頁:
urllib.request.urlretrieve('url', 'path')
在這里指定要保存的URL以及要存儲它的位置:
urllib.request.urlretrieve('https://www.python.org/', 'c:/users/LikeGeeks/documents/PythonOrganization.html')
在這段代碼中,我們使用了urlretrieve 方法并傳遞文件的URL,以及保存文件的路徑。文件擴展名為.html。
通過代理下載
如果需要使用代理下載文件,可以使用ProxyHandler 在urllib模塊中。檢查以下代碼:
import urllib.request>>> myProxy = urllib.request.ProxyHandler({'http': '127.0.0.2'})>>> openProxy = urllib.request.build_opener(myProxy)>>> urllib.request.urlretrieve('https://www.python.org/')
在此代碼中,我們創(chuàng)建了代理對象,并通過調用build_opener方法并傳遞代理對象。然后,我們請求檢索頁面。
此外,您還可以使用正式文檔中記錄的請求模塊:import requestsmyProxy = { 'http': 'http://127.0.0.2:3001' }requests.get("https://www.python.org/", proxies=myProxy)
使用urllib 3
urllib 3是urllib模塊的改進版本。您可以使用pip下載并安裝它:pip install urllib3我們將獲取一個網頁,并使用urllib 3將其存儲在文本文件中。導入以下模塊:
import urllib3, shutil
shutil模塊在處理文件時使用。現在,初始化URL字符串變量,如下所示:url = 'https://www.python.org/'然后,我們使用PoolManager 用于跟蹤必要的連接池的urllib 3。
c = urllib3.PoolManager()創(chuàng)建一個文件:
filename = "test.txt"
最后,我們發(fā)送一個GET請求來獲取URL并打開一個文件并將響應寫到該文件中:with c.request('GET', url, preload_content=False) as res, open(filename, 'wb') as
out_file:shutil.copyfileobj(res, out_file)
使用Boto 3從S3下載文件
要從AmazonS 3下載文件,可以使用PythonBoto 3模塊。在開始之前,您需要使用pip安裝awscli模塊:pip install awscli對于AWS配置,運行以下命令:
aws configure現在,輸入您的詳細信息如下:
AWS Access Key ID [None]: (The access key)AWS Secret Access Key [None]: (Secret access key)Default region name [None]: (Region)Default output format [None]: (Json)要從AmazonS 3下載文件,請導入boto 3和botocore。Boto 3是用于Python訪問AmazonWeb服務(如S3)的AmazonSDK。Botocore提供命令行服務來與AmazonWeb服務交互。Botocore配備了awscli。要安裝boto 3,運行以下命令:pip install boto3現在,導入這兩個模塊:
import boto3, botocore當從Amazon下載文件時,我們需要三個參數:桶的名字需要下載的文件的名稱。文件下載后的名稱。初始化變量:bucket = "bucketName"file_name = "filename"downloaded_file = "downloadedfilename"
現在,初始化一個變量以使用會話的資源。為此,我們將調用resource()方法并傳遞服務,即S3:
service = boto3.resource(‘s3’)
最后,使用download_file 方法并傳入變量:
service.Bucket(bucket).download_file(file_name, downloaded_file)
使用異步
異步模塊的重點是處理系統(tǒng)事件。它圍繞一個事件循環(huán)工作,該循環(huán)等待事件發(fā)生,然后對該事件作出反應。反應可以是調用另一個函數。這個過程叫做偶數處理。異步模塊使用協(xié)同處理事件。為了使用異步事件處理和協(xié)同服務功能,我們將導入異步模塊:import asyncio現在,定義異步協(xié)同器方法,如下所示:
async def coroutine(): await my_func()關鍵字異步告訴我們,這是一個本機異步協(xié)同器。在協(xié)同線的主體中,我們有一個等待關鍵字,它返回一個特定的值。返回關鍵字也可以使用。現在,讓我們使用Cooutine創(chuàng)建一個代碼,從Web下載一個文件:>>> import os
>>> import urllib.request
>>> async def coroutine(url):
r = urllib.request.urlopen(url)
filename = "couroutine_downloads.txt"
with open(filename, 'wb') as f:
for ch in r:
f.write(ch)
print_msg = 'Successfully Downloaded'
return print_msg
>>> async def main_func(urls_to_download):
co = [coroutine(url) for url in urls_to_download]
downloaded, downloading = await asyncio.wait(co)
for i in downloaded:
print(i.result())
urls_to_download = ["https://www.python.org/events/python-events/801/",
"https://www.python.org/events/python-events/790/",
"https://www.python.org/events/python-user-group/816/",
"https://www.python.org/events/python-events/757/"]
>>> eventLoop = asyncio.get_event_loop()
>>>
eventLoop.run_until_complete(main_func(urls_to_download))在這段代碼中,我們創(chuàng)建了一個異步協(xié)同函數,用于下載我們的文件并返回一條消息。然后,我們有另一個異步協(xié)同器調用main_func 它等待URL并生成所有URL的隊列。異步的等待函數等待協(xié)同器的完成。現在,要啟動coroutine,我們必須將coroutine放入事件循環(huán)中,方法是使用get_event_loop()方法,最后,使用run_until_complete()異步方法
使用Python下載文件很有趣。希望這個教程對你有用!
python下載文件使用Python下載文件的簡單示例
您可以使用請求模塊從URL下載文件。考慮以下守則:import requestsurl = 'https:\/\/www.python.org\/static\/img\/python-logo@2x.png'myfile = requests.get(url)open('c:\/users\/LikeGeeks\/downloads\/PythonImage.png', 'wb').write(myfile.content)只需使用get 方法,并將結果存儲到名為“myfile”的變量中。然...
Python下載文件的11種方式
import wgetwget.download('http:\/\/example.com\/python_logo.png', 'python_logo.png')3. 處理重定向遇到重定向,用requests下載pdf文件:response = requests.get('redirect_url', allow_redirects=True)with open('file.pdf', 'wb') as file: file.write(response.content)4. 分塊下載大文...
Python從網頁上下載文件的9種方法
一、使用requests庫,模仿網頁請求下載文件。示例代碼如下:二、利用wget庫下載文件。示例代碼如下:三、處理重定向資源。使用requests庫時,添加參數即可下載重定向的URL。四、大文件分塊下載。通過設置stream參數為True,使用requests庫實現分塊下載。五、并發(fā)下載。利用多線程或多進程技術,顯著提高文件下載速...
如何用python自動下載網頁文件?
首先,Requests模塊的get方法用于下載網頁內容,廣泛應用于Python爬蟲。其次,Python內置的urllib模塊的urlretrieve方法能夠直接將URL請求保存為文件。urllib3是用于HTTP客戶端的強大Python模塊,它通過連接池提高網絡請求效率。對于Linux系統(tǒng)用戶,wget命令提供了下載網絡資源的便捷方式,通過安裝相應的wget模塊。在下...
python 文件下載、大文件下載、異步批量下載 教程
例1 import requests def request_zip(url):r = requests.get(url)with open("new\/名字.png", 'wb') as f:f.write(r.content)request_zip(' pythondict.com\/wp-conte...')運行此代碼后,圖片會被保存至當前文件夾的new文件夾中。然而,當面臨大文件下載時,上述方法會受限于內存限制,因為...
11 種方法教你用 Python 高效下載資源!
使用requests進行資源下載 借助requests模塊,可從URL高效下載文件。首先,使用requests的get方法獲取URL內容,存儲到變量中,接著將內容寫入文件。使用wget進行下載 wget模塊同樣支持從URL下載文件。安裝wget模塊使用pip命令。示例代碼展示如何下載Python的logo圖像,通過wget模塊的download方法傳遞URL和路徑。下載重...
Python下載網絡文本數據到本地內存的四種實現方法
12345678910111213141516171819202122232425262728293031323334353637importurllib.requestimportrequestsfromioimportStringIOimportnumpy as npimportpandas as pd下載網絡文件,并導入CSV文件作為numpy的矩陣# 網絡數據文件地址url=# 方法一# ===# 下載文件#r = urllib.request.urlopen(url)# 導入CSV文件作為numpy的矩陣...
python的requests模塊下載文件
首先,我們需要導入requests庫,然后調用get方法從指定URL獲取文件。這里我們使用了一個假設的URL 'http:\/\/www.xx.xx\/xxxx\/xx.dat'。獲取文件后,我們還需要檢查是否有任何錯誤發(fā)生,這可以通過調用res.raise_for_status()方法來實現。如果請求沒有成功,該方法將引發(fā)HTTPError異常。接著,我們需要創(chuàng)建...
11 種方法教你用 Python 高效下載資源!
首先,你可以使用requests模塊從一個URL下載文件。只需使用requests模塊的get方法獲取URL,并將結果存儲到一個名為“myfile”的變量中,然后將這個變量的內容寫入文件。其次,使用wget模塊可以更簡便地從URL下載文件。通過pip安裝wget模塊后,可以使用wget模塊的download方法下載所需的文件,如Python的logo圖像...
用Python打造一款非常實用的小說下載器,只需鏈接,即可一鍵下載
python import tkinter as tk def download_novel():這里填寫小說下載代碼 假設我們有一個函數 download() 來下載小說 通過傳入小說鏈接來執(zhí)行下載 download("http:\/\/example.com\/novel")def main():root = tk.Tk()root.title("小說下載器")button = tk.Button(root, text="下載小說", command=...
相關評說:
文山縣平衡: ______ pip install pymysql
文山縣平衡: ______ 第一種pip方式,現在python都帶pip,直接pip install 包名就行了 第二種基本安裝方法1 下載第三方包,解壓2 在命令提示符里輸入cmd,然后用cd進入到第三方包的路徑下3 輸入Python setup.py build4 輸入python setup.py install 看到包內的文件在安裝即可
文山縣平衡: ______ 一、下載pyinstaller 我使用的版本為PyInstaller-2.1,支持python版本2.3-2.7,點擊這里下載.二、安裝pyinstaller 下載完成后,解壓即可.我的解壓目錄為D:\Python27\PyInstaller-2.1\三、使用pyinstaller打包.py成.exe應用程序1.注意使用前要安裝...
文山縣平衡: ______ PyCharm安裝1 從文末鏈接或者Jetbrains官網下載安裝包,雙擊進行安裝;可選擇pycharm作為打開.py文件的默認安裝程序2 下一步,直至安裝完成.這時候PyCharm就自動運行了.由于是首次使用,我們對下面的彈出窗口依次選擇默認選項即...
文山縣平衡: ______ Python圖片文本識別使用的工具是PIL和pytesser.因為他們使用到很多的python庫文件,為了避免一個個工具的安裝,建議使用pythonxy pytesser是OCR開源項目的一個模塊,在Python中導入這個模塊即可將圖片中的文字轉換成文本.pytesser...
文山縣平衡: ______ 1.先檢查當前系統(tǒng)中是否已經安裝python,直接使用python -V查看 2.也可以直接使用上圖中提示的命令來進行安裝python,但建議使用官網的安裝包進行安裝,如下圖,選擇相應的版本進行下載 3.下載完成后進行解壓,解壓完成后進入軟件目錄 4.使用如下命令進行編譯安裝,如下圖 5.安裝完成后,再對已經安裝完成的軟件檢測發(fā)現已經安裝成功,
文山縣平衡: ______ 首先下載模塊,然后在這個模塊的目錄里,應該可以看到一個install.py這個文件,然后執(zhí)行:python install.py install 就行了,只不過要管理員權限.
文山縣平衡: ______ 1.打開pycharm工具,并新建一個python文件;導入re模塊,并調用compile方法. 2.利用對象p,調用match方法,并賦值給m,打印m的值. 3.保存代碼并使用python應用運行,可以查看到結果. 4.再次調用match方法,添加兩個參數,開始位置和結束位置. 5.再次保存代碼并運行,查看到顯示對象以及對象屬性.
文山縣平衡: ______ 一,安裝mysql 如果是windows 用戶,mysql 的安裝非常簡單,直接下載安裝文件,雙擊安裝文件一步一步進行操作即可.Linux 下的安裝可能會更加簡單,除了下載安裝包進行安裝外,一般的linux 倉庫中都會有mysql ,我們只需要通過一個命令...
文山縣平衡: ______ 方法/步驟 我們先來安裝Python,博主選擇的版本是最新的3.4.2版本.windows下面的Python安裝一般是通過軟件安裝包安裝而不是命令行,所以我們首先要在Python的官方主頁上面下載最新的Python安裝包.下載地址是:https://www.python....