Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用してWebからファイルをダウンロードしますか?


Pythonは、Webからファイルをダウンロードするためのurllib、requestsなどのさまざまなモジュールを提供します。 Pythonのリクエストライブラリを使用して、URLからファイルを効率的にダウンロードします。

リクエストライブラリを使用してURLを使用してファイルをダウンロードする手順を段階的に見ていきましょう-

1。モジュールのインポート

import requests

2。リンクまたはURLを取得する

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

3。コンテンツを名前で保存します。

open('facebook.ico', 'wb').write(r.content)

ファイルをfacebook.icoとして保存します。

import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)

結果

Pythonを使用してWebからファイルをダウンロードしますか?

ファイルが現在の作業ディレクトリにダウンロードされている(アイコン)ことがわかります。

ただし、画像、テキスト、ビデオなど、さまざまな種類のファイルをWebからダウンロードする必要がある場合があります。それでは、最初にURLがリンクしているデータの種類を取得しましょう-

>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png

ただし、実際にダウンロードする前にURLのヘッダーをフェッチするだけの、よりスマートな方法があります。これにより、ダウンロードすることを意図していないファイルのダウンロードをスキップできます。

>>> print(is_downloadable('https://www.youtube.com/watch?v=xCglV_dqFGI'))
False
>>> print(is_downloadable('https://www.facebook.com/favicon.ico'))
True

ファイルサイズでダウンロードを制限するために、content-lengthヘッダーからfilezieを取得し、要件に従って実行できます。

contentLength = header.get('content-length', None)
if contentLength and contentLength > 2e8: # 200 mb approx
return False

URLからファイル名を取得

ファイル名を取得するために、URLを解析できます。以下は、バックスラッシュ(/)の後の最後の文字列をフェッチするサンプルルーチンです。

url= "https://www.computersolution.tech/wp-content/uploads/2016/05/tutorialspoint-logo.png"
if url.find('/'):
print(url.rsplit('/', 1)[1]

上記は、URLのファイル名を示します。ただし、たとえばhttps://url.com/downloadなどのURLにファイル名情報が含まれていない場合が多くあります。このような場合、ファイル名情報を含むContent-Dispositionヘッダーを取得する必要があります。

import requests
import re

def getFilename_fromCd(cd):
"""
Get filename from content-disposition
"""
if not cd:
return None
fname = re.findall('filename=(.+)', cd)
if len(fname) == 0:
return None
return fname[0]


url = 'https://google.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
filename = getFilename_fromCd(r.headers.get('content-disposition'))
open(filename, 'wb').write(r.content)

上記のURL解析コードを上記のプログラムと組み合わせて使用​​すると、ほとんどの場合、Content-Dispositionヘッダーからファイル名が取得されます。


  1. Pythonでlxmlを使用してWebスクレイピングを実装しますか?

    Webスクレイピングは、データサイエンスの愛好家だけでなく、Webサイトをより深く掘り下げたい学生や学習者を興奮させます。 Pythonは、次のような多くのWebスクレイピングライブラリを提供しています。 Scrapy Urllib BeautifulSoup セレン Pythonリクエスト LXML Cで記述されたlibxml2XML解析ライブラリの上に構築されたWebページからデータを取得するPythonのlxmlライブラリについて説明します。これにより、Beautiful Soupよりも高速になりますが、一部のコンピューター、特にWind

  2. Pythonを使用して複数のファイルの名前を変更する

    rename()メソッドは、Python3でファイルまたはディレクトリの名前を変更するために使用されます。 rename()メソッドはosモジュールの一部です。 os.rename()の構文 os.rename(src, dst) 最初の引数は、名前を変更するファイルの送信元アドレスであるsrcであり、2番目の引数は新しい名前の宛先であるdstです。 画像フォルダが1つあるディレクトリを考えてみましょう。ここにこの画像フォルダがあります。 入力 サンプルコード import os # Function to rename multiple files def main():