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

Pythonのurllib.parseモジュール徹底解説 — URLの分解・結合・エンコード方法

urllib.parseモジュールは、URL(Uniform Resource Locator)文字列を構成要素に分解したり、逆に各コンポーネントを組み合わせて1つのURL文字列を生成したりするための標準的なインターフェースを提供します。また、「ベースURL」を基準として「相対URL」を絶対URLへ変換する機能も備えています。

このモジュールがサポートしている主なURLスキームは以下のとおりです。

  • file
  • ftp
  • gopher
  • hdl
  • http / https
  • imap
  • mailto
  • mms
  • news / nntp / snews
  • prospero
  • rsync
  • rtsp / rtspu
  • sftp / shttp
  • sip / sips
  • svn / svn+ssh
  • telnet
  • wais
  • ws / wss

urlparse()関数

urlparse()は、URLを6つのコンポーネントに分解し、6要素のタプルを返す関数です。この構造は一般的なURLの形式に対応しています。各タプルの要素は文字列であり、それ以上細かく分割されることはありません(例:ネットワーク上の位置情報「netloc」は1つの文字列として扱われます)。また、「%」によるエスケープシーケンスは展開されません。

戻り値はタプルのサブクラスのインスタンスで、以下の属性を持ちます。

属性インデックス存在しない場合の値
scheme0URLスキームの指定子schemeパラメータ
netloc1ネットワーク上の位置(ドメインなど)空文字列
path2階層的なパス空文字列
params3最後のパス要素に対するパラメータ空文字列
query4クエリコンポーネント空文字列
fragment5フラグメント識別子空文字列
username-ユーザー名None
password-パスワードNone
hostname-ホスト名(小文字)None
port-ポート番号(整数、指定がある場合)None

使用例

>>> from urllib.parse import urlparse
>>> url = 'https://mail.google.com/mail/u/0/?tab=rm#inbox'
>>> t = urlparse(url)
ParseResult(scheme='https', netloc='mail.google.com', path='/mail/u/0/', params='', query='tab=rm', fragment='inbox')

urlunparse()関数

urlunparse()は、urlparse()が返したタプルからURL文字列を再構築する関数です。引数には6つの要素を持つ任意のイテラブルを渡せます。

>>> from urllib.parse import urlunparse
>>> urlunparse(t)
'https://mail.google.com/mail/u/0/?tab=rm#inbox'

urlsplit()関数

urlsplit(urlstring, scheme='', allow_fragments=True)は、urlparse()と似ていますが、paramsをURLから分離しない点が異なります。戻り値は5要素のタプル(スキーム、ネットワーク上の位置、パス、クエリ、フラグメント識別子)です。

>>> from urllib.parse import urlsplit
>>> urlsplit(url)
SplitResult(scheme='https', netloc='mail.google.com', path='/mail/u/0/', query='tab=rm', fragment='inbox')

urlunsplit()関数

urlunsplit()は、urlsplit()が返したタプルの要素を組み合わせて、完全なURL文字列を生成します。

また、このモジュールにはURL引用(クォート)関数群も含まれています。これらはプログラム上のデータを安全なURLコンポーネントとして扱えるように、特殊文字をクォートしたり、非ASCIIテキストを適切にエンコードしたりする役割を担います。

quote()関数

quote()は、文字列内の特殊文字を「%xx」形式のエスケープシーケンスに置き換えます。英字、数字、および「_.-~」の各文字は決してクォートされません。

>>> from urllib.parse import quote
>>> q = quote(url)
>>> q
'https%3A//mail.google.com/mail/u/0/%3Ftab%3Drm%23inbox'

quote_plus()関数

quote_plus()quote()と同様ですが、さらにスペースをプラス記号(+)に置き換えます。これは、URLに埋め込むクエリ文字列を構築する際に、HTMLフォームの値をクォートするために必要な処理です。

unquote()関数

unquote()は、「%xx」形式のエスケープシーケンスを対応する単一の文字に戻します。quote()の逆変換を行う関数です。

>>> from urllib.parse import unquote
>>> unquote(q)
'https://mail.google.com/mail/u/0/?tab=rm#inbox'

urlencode()関数

urlencode()は、マッピングオブジェクト(辞書など)または2要素タプルのシーケンスを、パーセントエンコードされたASCIIテキスト文字列に変換します。結果の文字列は、「&」記号で区切られた一連の「key=value」ペアとなります。

>>> from urllib.parse import urlencode
>>> qry = {"name": "Rajeev", "salary": 20000}
>>> urlencode(qry)
'name=Rajeev&salary=20000'
  1. 【Python】Pandasのデータをセット(set)に型キャストする方法

    Pandasの列データをセット(set)に変換したい場合は、Python組み込みのset()関数を使用します。セットに変換することで重複した値が自動的に除去され、和集合や積集合などの集合演算も簡単に行えるようになります。 まずは、サンプルとして使用するDataFrameを作成しましょう。 dataFrame = pd.DataFrame( { EmpName: [John, Ted, Jacob, Scarlett, Ami, Ted, Scarlett], Zone: [North, South, South, East, West, East, North

  2. Python(tkinter)でプログラムからURLを開く方法|webbrowserモジュールの使い方

    Pythonには、さまざまな用途に活用できる豊富なライブラリや拡張モジュールが用意されています。Webベースのコンテンツを扱う際には、Python標準のwebbrowserモジュールが便利です。このモジュールを利用することで、アプリケーションからWebブラウザを起動し、Webコンテンツを表示する環境を簡単に構築できます。 webbrowserモジュールはPythonの標準ライブラリとして同梱されているため、通常は追加インストール不要ですぐに使えます。まず、以下のようにインポートして動作を確認してみましょう。 import webbrowser もし環境によってモジュールが見つからない場合は、以