最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)批量下載文件的示例代碼

 更新時間:2023年11月03日 09:13:09   作者:卑微小文  
下載文件是我們在日常工作中常常要做的一件事情,當(dāng)我們需要從互聯(lián)網(wǎng)上批量下載大量文件時,手動一個一個去下載顯然不夠高效,所以本文為大家介紹一下如何利用python批量下載文件吧

前言

下載文件是我們在日常工作中常常要做的一件事情。當(dāng)我們需要從互聯(lián)網(wǎng)上批量下載大量文件時,手動一個一個去下載顯然不夠高效。為了解決這個問題,我們可以使用Python編寫一個批量下載文件的腳本,讓它自動幫我們下載文件。同時,為了避免下載過程中被網(wǎng)站禁止訪問,我們也可以運用代理ip。

在本文中,我將會分為以下幾個部分來介紹如何使用Python進行批量下載:

  • 準備工作
  • 批量下載文件
  • 添加代理ip
  • 處理異常

在本文中,我將使用requests庫來進行文件下載和代理設(shè)置。我們將會介紹如何通過requests庫來下載文件、如何設(shè)置代理ip來繞過網(wǎng)站的訪問限制,以及如何處理下載過程中可能會出現(xiàn)的異常。

1. 準備工作

在進行批量下載之前,我們需要先確定要下載的文件的URL列表??梢詫⑦@些URL存儲在一個文本文件中,每行一個URL,例如:

http://example.com/file1.zip
http://example.com/file2.zip
http://example.com/file3.zip

我們可以使用Python的open函數(shù)讀取這個文本文件并獲取URL列表:

with open('urls.txt', 'r') as f:
    urls = f.read().splitlines()

這里我們使用了read函數(shù)將整個文本文件內(nèi)容讀入內(nèi)存,然后使用splitlines函數(shù)將每一行的URL轉(zhuǎn)換成一個列表。

2. 批量下載文件

批量下載文件的代碼主要分為兩個部分,一個是從遠程服務(wù)器下載文件,另一個是將文件保存到本地。

我們可以使用Python的requests庫來下載文件,并且可以通過設(shè)置stream=True參數(shù)來實現(xiàn)分塊下載,有利于下載大文件時減少內(nèi)存占用。

import requests

def download_file(url, output_path):
    with requests.get(url, stream=True) as r:
        r.raise_for_status()
        with open(output_path, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192):
                if chunk:
                    f.write(chunk)
                    f.flush()

這個函數(shù)接收兩個參數(shù),一個是遠程服務(wù)器上的文件URL,另一個是本地文件路徑。內(nèi)部使用requests.get函數(shù)來下載文件,將響應(yīng)對象以二進制流的方式寫入本地文件中。

3. 添加代理ip

有些網(wǎng)站可能會對同一IP地址下載次數(shù)進行限制,導(dǎo)致我們無法下載。為了繞過這個限制,我們可以使用代理IP。

代理IP是一種通過轉(zhuǎn)發(fā)來實現(xiàn)客戶端與服務(wù)端間請求、響應(yīng)的中間服務(wù)器。我們可以使用代理服務(wù)器來隱藏客戶端的真實IP地址,從而繞過某些網(wǎng)站的下載限制。

下面的代碼演示了如何設(shè)置代理IP:

import requests

proxies = {
    'http': 'http://127.0.0.1:8080',
    'https': 'https://127.0.0.1:8080'
}

with requests.get(url, proxies=proxies) as r:
    # 下載文件

這里我們定義了一個字典類型的proxies,其中key為協(xié)議類型,value為代理IP地址。然后在requests.get函數(shù)中設(shè)置proxies參數(shù)即可。

4. 處理異常

在實際使用中,我們可能會遇到諸如文件不存在、網(wǎng)絡(luò)異常等問題,需要對這些異常進行處理,防止程序崩潰。

import requests

def download_file(url, output_path):
    try:
        with requests.get(url, stream=True) as r:
            r.raise_for_status()
            with open(output_path, 'wb') as f:
                for chunk in r.iter_content(chunk_size=8192):
                    if chunk:
                        f.write(chunk)
                        f.flush()
    except requests.exceptions.RequestException as e:
        print(f'Error downloading {url}: {e}')

在代碼中,我們使用try/except語句來捕獲requests庫可能拋出的異常,并使用print語句將異常信息輸出到控制臺。這樣,即使下載文件失敗,程序也不會因此停止運行。

完整代碼

import requests

def download_file(url, output_path):
    try:
        with requests.get(url, stream=True) as r:
            r.raise_for_status()
            with open(output_path, 'wb') as f:
                for chunk in r.iter_content(chunk_size=8192):
                    if chunk:
                        f.write(chunk)
                        f.flush()
    except requests.exceptions.RequestException as e:
        print(f'Error downloading {url}: {e}')
        
with open('urls.txt', 'r') as f:
    urls = f.read().splitlines()

for url in urls:
    filename = url.split('/')[-1]
    download_file(url, filename)

這是一個基本的批量下載代碼,可以從urls.txt文件中讀取文件URL列表,并自動下載到當(dāng)前目錄中。

如果你需要使用代理ip下載文件,可以使用以下代碼:

import requests

proxies = {
    'http': 'http://127.0.0.1:8080',
    'https': 'https://127.0.0.1:8080'
}

def download_file(url, output_path):
    try:
        with requests.get(url, proxies=proxies, stream=True) as r:
            r.raise_for_status()
            with open(output_path, 'wb') as f:
                for chunk in r.iter_content(chunk_size=8192):
                    if chunk:
                        f.write(chunk)
                        f.flush()
    except requests.exceptions.RequestException as e:
        print(f'Error downloading {url}: {e}')

with open('urls.txt', 'r') as f:
    urls = f.read().splitlines()

for url in urls:
    filename = url.split('/')[-1]
    download_file(url, filename)

這個代碼與前面的批量下載代碼類似,只是在下載文件時設(shè)置了proxies參數(shù)。

總結(jié)

使用Python編寫批量下載代碼,可以提高工作效率。本文介紹了如何使用requests庫來下載文件,如何設(shè)置代理IP來繞過某些網(wǎng)站的下載限制,并且展示了如何處理下載過程中可能會出現(xiàn)的異常。

到此這篇關(guān)于Python實現(xiàn)批量下載文件的示例代碼的文章就介紹到這了,更多相關(guān)python批量下載文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 二十種Python代碼游戲源代碼分享

    二十種Python代碼游戲源代碼分享

    這篇文章主要介紹了二十種Python代碼游戲源代碼分享,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • python實現(xiàn)12306搶票及自動郵件發(fā)送提醒付款功能

    python實現(xiàn)12306搶票及自動郵件發(fā)送提醒付款功能

    本文給大家分享python實現(xiàn)12306搶票及自動郵件發(fā)送提醒付款功能,文章沒有給大家貼出完整代碼,只是技術(shù)交流,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-03-03
  • 計算機二級python學(xué)習(xí)教程(2) python語言基本語法元素

    計算機二級python學(xué)習(xí)教程(2) python語言基本語法元素

    這篇文章主要為大家詳細介紹了計算機二級python學(xué)習(xí)教程的第2篇,Python語言基本語法元素,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Python入門教程之變量與數(shù)據(jù)類型

    Python入門教程之變量與數(shù)據(jù)類型

    這篇文章主要介紹了Python入門教程之變量與數(shù)據(jù)類型的相關(guān)知識,文中給大家提到了變量的基本概念和數(shù)據(jù)類型的相關(guān)實例代碼,需要的朋友可以參考下
    2022-02-02
  • python實現(xiàn)excel公式格式化的示例代碼

    python實現(xiàn)excel公式格式化的示例代碼

    這篇文章主要介紹了python實現(xiàn)excel公式格式化的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python列表的構(gòu)造方法list()

    python列表的構(gòu)造方法list()

    這篇文章主要介紹了python列表的構(gòu)造方法list(),python中沒有數(shù)組這個概念,與之相應(yīng)的是列表,本篇文章就來說說列表這個語法,下面文章詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • 新手如何快速入門Python(菜鳥必看篇)

    新手如何快速入門Python(菜鳥必看篇)

    下面小編就為大家?guī)硪黄率秩绾慰焖偃腴TPython(菜鳥必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 將Django使用的數(shù)據(jù)庫從MySQL遷移到PostgreSQL的教程

    將Django使用的數(shù)據(jù)庫從MySQL遷移到PostgreSQL的教程

    這篇文章主要介紹了將Django使用的數(shù)據(jù)庫從MySQL遷移到PostgreSQL的教程,同時提到了一些注意事項,需要的朋友可以參考下
    2015-04-04
  • python中filter函數(shù)的用法示例代碼

    python中filter函數(shù)的用法示例代碼

    filter() 函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象,如果要轉(zhuǎn)換為列表,可以使用 list() 來轉(zhuǎn)換,這篇文章主要介紹了python中filter函數(shù)的用法,需要的朋友可以參考下
    2022-12-12
  • python和c語言哪個更適合初學(xué)者

    python和c語言哪個更適合初學(xué)者

    在本篇文章里小編給大家分享的是一篇關(guān)于python和c語言哪個更適合初學(xué)者的相關(guān)文章,有興趣的朋友們學(xué)習(xí)下。
    2020-06-06

最新評論

稻城县| 阿瓦提县| 海口市| 个旧市| 滨州市| 南安市| 马公市| 江源县| 钟山县| 咸丰县| 长治县| 常州市| 贵溪市| 大悟县| 大冶市| 南澳县| 博白县| 蒙山县| 渝中区| 外汇| 孟津县| 天柱县| 曲水县| 阳西县| 瑞丽市| 科技| 恩施市| 揭西县| 平度市| 尉氏县| 汪清县| 同心县| 赞皇县| 霸州市| 秦皇岛市| 镇赉县| 军事| 临桂县| 漳浦县| 佛坪县| 日土县|