ホームページ > バックエンド開発 > Python チュートリアル > Python 3 で Web からファイルをダウンロードするには?

Python 3 で Web からファイルをダウンロードするには?

Mary-Kate Olsen
リリース: 2024-11-04 03:53:01
オリジナル
860 人が閲覧しました

How to Download Files from the Web in Python 3?

Python 3 で Web からファイルをダウンロードする

はじめに

インターネットと対話するプログラムを作成する場合、多くの場合、ファイルをダウンロードする必要があります。 Webサーバーから。 Python 3 では、このタスクを実行する方法が複数あります。

Python 3 の解決策

関数は URL 引数にバイト型を期待しているため、最初に提供されたコードではエラーが発生しますが、抽出されたJAD ファイルの URL は文字列です。 URL が文字列として保存されている場合にファイルをダウンロードするには、UTF-8 エンコードを使用してバイト型に変換します。

<code class="python">import urllib.request

def downloadFile(URL=None):
    h = urllib.request.urlopen(URL.encode('utf-8'))
    return h.read()

downloadFile(URL_from_file)</code>
ログイン後にコピー

代替ソリューション:

いくつかの代替方法があります。 Web からファイルをダウンロードします:

  • urllib.request.urlopen: urlopen:

    <code class="python">response = urllib.request.urlopen(URL)
    data = response.read() # a `bytes` object
    text = data.decode('utf-8') # a `str`</code>
    ログイン後にコピー
    の応答を読んで Web ページのコンテンツを取得します。
  • urllib.request.urlretrieve: ファイルをローカルにダウンロードして保存します:

    <code class="python">urllib.request.urlretrieve(URL, file_name)</code>
    ログイン後にコピー
  • urllib.request。 urlopen shutil.copyfileobj: ファイルのダウンロードに対して強く推奨される最も正しいアプローチを提供します:

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      shutil.copyfileobj(response, out_file)</code>
    ログイン後にコピー
  • urllib.request.urlopen write to bytes object: より単純なオプションですが、小さいファイルにのみ推奨されます:

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      data = response.read() # a `bytes` object
      out_file.write(data)</code>
    ログイン後にコピー

圧縮データの処理

最後に、圧縮データをその場で抽出することもできます。可能:

<code class="python">url = 'http://example.com/something.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # a `bytes` object</code>
ログイン後にコピー

以上がPython 3 で Web からファイルをダウンロードするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート