Python Urllib.Request と urlopen() を使用したインターネット アクセス
⚡ スマートサマリー
urllibは標準です Python インターネットデータにアクセスするためのモジュールで、プログラムを開くことができます URLs にアクセスして HTML、JSON、またはバイナリコンテンツを取得します。urllib.request.urlopen() 関数は Web アドレスに接続し、サーバー応答を直接読み取ります。 Python.

以下のセクションでは、urllibとは何か、 URL そして、そのHTMLの読み方、エラーの処理方法、ファイルのダウンロード方法、urllibとrequestsライブラリのどちらを使うかを選択する方法などを学びます。
URLlibとは何ですか?
urllibは Python 開くために使用できるモジュール URLs。これは、 URL 行動。
自律的AI Pythonまた、XML、HTML、JSONなどのインターネット上のデータにアクセスして取得し、そのデータを直接操作することもできます。以下のセクションでは、Webからデータを取得する方法を見ていきます。たとえば、ここでは Guru99ビデオ URL使用するには Pythonそして、このHTMLファイルを印刷します URL.
urllib パッケージには、いくつかのモジュールが含まれています。urllib.request は、ファイルを開くためのものです。 URLs、リクエストが引き起こす可能性のある例外についてはurllib.error、構築と解析についてはurllib.parse URLrobots.txt ファイルを読み込むための s と urllib.robotparser。
開く方法 URL Urllibを使用する
インターネットデータに接続するコードを実行する前に、 URL ライブラリモジュール、または「urllib」。
- URLlibをインポートする
- メイン関数を定義する
- 変数 webUrl を宣言します
- 次に、urllibライブラリのurlopen関数を呼び出します。
- その URL 私たちがオープンするのは Guru99のチュートリアル YouTube
- 次に、結果コードを出力します。
- 結果コードは、作成したwebUrl変数に対してgetcode関数を呼び出すことで取得されます。
- それを文字列に変換し、文字列「結果コード」と連結できるようにします。
- これは通常のHTTPコード「200」であり、HTTPリクエストが正常に処理されたことを示します。
HTMLファイルを取得する方法 URL in Python
read() 関数を使用して HTML ファイルを読み込むこともできます。 Pythonコードを実行すると、HTMLファイルがコンソールに表示されます。
- webUrl変数に対してread()関数を呼び出します。
- read() メソッドを使用すると、データファイルの内容を読み込むことができます。
- 内容全体をお読みください URL データという変数に格納する
- コードを実行すると、データがHTML形式で出力されます。
完全なコードは次のとおりです。
Python 2例
# # read the data from the URL and print it # import urllib2 def main(): # open a connection to a URL using urllib2 webUrl = urllib2.urlopen("https://www.youtube.com/user/guru99com") #get the result code and print it print "result code: " + str(webUrl.getcode()) # read the data from the URL and print it data = webUrl.read() print data if __name__ == "__main__": main()
Python 3例
# # read the data from the URL and print it # import urllib.request # open a connection to a URL using urllib webUrl = urllib.request.urlopen('https://www.youtube.com/user/guru99com') #get the result code and print it print ("result code: " + str(webUrl.getcode())) # read the data from the URL and print it data = webUrl.read() print (data)
urllibのエラー処理方法: URLエラーとHTTPエラー
リクエストは必ずしも成功するとは限りません。何らかの問題が発生した場合、urllib はデータを返す代わりに例外を発生させるため、これらのエラーを適切に処理することが重要です。urllib.error モジュールは、主に 2 つの例外クラスを定義しています。
- HTTPエラー サーバーが404 Not Foundや500 Internal Server Errorなどのエラー状態コードを返した場合に発生します。このイベントには、状態コードとレスポンスボディが含まれます。
- URLエラー サーバーに全くアクセスできない場合(例えば、ドメイン名が間違っている、インターネット接続がないなど)に発生します。この例外には、失敗の原因を説明するreason属性が含まれています。
HTTPError はサブクラスであるため URLエラーが発生した場合は、常に最初に HTTPError をキャッチして、各エラーの種類を個別に処理するようにしてください。
from urllib.request import urlopen from urllib.error import HTTPError, URLError try: response = urlopen("https://www.guru99.com/no-such-page.html") data = response.read() except HTTPError as error: print("HTTP error:", error.code) except URLError as error: print("URL error:", error.reason)
これらの例外を適切に処理することで、プログラムのクラッシュを防ぎ、問題のログ記録、リクエストの再試行、またはキャッシュされたデータへのフォールバックが可能になります。
ファイルをダウンロードする方法 URL urllibを使用する
を読む URL メモリへの書き込みは小さなページには有効ですが、画像、PDF 文書、データセットの場合は、レスポンスを直接ディスクに保存する方が簡単です。urllib.request モジュールには、これを行うための 2 つの簡単な方法が用意されています。
urlretrieve() 関数は、 URL ローカルファイルに直接、一行で書き込む:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
さらに細かく制御するには、 URL そして、バイト列を自分で書き込みます。urlopen() はテキストではなくバイト列を返すため、ローカルファイルをバイナリモードで開いてください。
from urllib.request import urlopen with urlopen("https://example.com/data.zip") as response: with open("data.zip", "wb") as file: file.write(response.read())
非常に大きなファイルの場合は、response.read(8192) を使用してループ内で読み書きを行い、ファイル全体が一度にメモリに保持されないようにしてください。
urllibとrequestsライブラリの比較 Python
urllib は、 Python 標準ライブラリなので、インストール不要でどこでも動作します。サードパーティ製のrequestsライブラリは標準では組み込まれていませんが、構文が短く読みやすいため、多くの開発者が日常的なHTTP作業に好んで使用しています。
主な違いは次のとおりです。
- インストール: urllibには以下が同梱されています Python一方、requestsはpipでインストールする必要があります。
- デコード: urllibは生のバイト列を返すため、それを自分でデコードする必要がありますが、requestsはテキストとJSONを自動的にデコードします。
- 利便性: requestsライブラリは、セッション、クッキー、カスタムヘッダーをより少ないコードで処理します。
- 依存関係: urllibは何も追加しないが、requestsは内部的にurllib3に依存している。
依存関係を一切なくしたい場合や、短時間で一度限りのリクエストが必要な場合は、urllibを選択してください。認証、セッション、頻繁なAPI呼び出しを伴う大規模なプロジェクトの場合は、requestsを選択してください。どちらも同じHTTPリクエストを送信するため、どちらを選ぶかは利便性と依存関係の少なさのどちらを重視するかによって決まります。


