urllib.parse — URLをコンポーネントに解析します—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/urllib.parse
移動先:案内検索

urllib.parse —URLをコンポーネントに解析します

ソースコード: :source: `Lib / urllib / parse.py`



このモジュールは、Uniform Resource Locator(URL)文字列をコンポーネント(アドレス指定スキーム、ネットワークの場所、パスなど)に分割し、コンポーネントを結合してURL文字列に戻し、「相対URL」をに変換するための標準インターフェイスを定義します。 「ベースURL」が指定された絶対URL。

このモジュールは、Relative Uniform ResourceLocatorに関するインターネットRFCと一致するように設計されています。 次のURLスキームをサポートします:fileftpgopherhdlhttphttps、[ X105X] 、mailtommsnewsnntpprosperorsync、[X188X ] 、rtspusftpshttpsipsipssnewssvnsvn+sshtelnetwaiswswss

urllib.parse モジュールは、URL解析とURL引用の2つの大きなカテゴリに分類される関数を定義します。 これらについては、次のセクションで詳しく説明します。

URL解析

URL解析機能は、URL文字列をそのコンポーネントに分割すること、またはURLコンポーネントをURL文字列に結合することに重点を置いています。

urllib.parse.urlparse(urlstring, scheme=, allow_fragments=True)

URLを6つのコンポーネントに解析し、6項目の名前付きタプルを返します。 これは、URLの一般的な構造scheme://netloc/path;parameters?query#fragmentに対応します。 各タプルアイテムは文字列であり、空の可能性があります。 コンポーネントは小さな部分に分割されず(たとえば、ネットワークの場所は単一の文字列です)、% eスケープは展開されません。 上記の区切り文字は、 path コンポーネントの先頭のスラッシュが存在する場合は保持されることを除いて、結果の一部ではありません。 例えば:

>>> from urllib.parse import urlparse
>>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
>>> o   
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
            params='', query='', fragment='')
>>> o.scheme
'http'
>>> o.port
80
>>> o.geturl()
'http://www.cwi.nl:80/%7Eguido/Python.html'

RFC 1808 の構文仕様に従って、urlparseは「//」によって適切に導入された場合にのみnetlocを認識します。 それ以外の場合、入力は相対URLであると見なされるため、パスコンポーネントで始まります。

>>> from urllib.parse import urlparse
>>> urlparse('//www.cwi.nl:80/%7Eguido/Python.html')
ParseResult(scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
            params='', query='', fragment='')
>>> urlparse('www.cwi.nl/%7Eguido/Python.html')
ParseResult(scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html',
            params='', query='', fragment='')
>>> urlparse('help/Python.html')
ParseResult(scheme='', netloc='', path='help/Python.html', params='',
            query='', fragment='')

schema 引数は、URLで指定されていない場合にのみ使用されるデフォルトのアドレス指定スキームを提供します。 デフォルト値が常に許可され、必要に応じて自動的にbに変換されることを除いて、 urlstring と同じタイプ(テキストまたはバイト)である必要があります。

allow_fragments 引数がfalseの場合、フラグメント識別子は認識されません。 代わりに、パス、パラメーター、またはクエリコンポーネントの一部として解析され、fragmentは戻り値の空の文字列に設定されます。

戻り値は名前付きタプルです。これは、その項目にインデックスまたは名前付き属性としてアクセスできることを意味します。

属性

索引

価値

存在しない場合の値

scheme

0

URLスキーム指定子

スキームパラメーター

netloc

1

ネットワークロケーション部分

空の文字列

path

2

階層パス

空の文字列

params

3

最後のパス要素のパラメーター

空の文字列

query

4

クエリコンポーネント

空の文字列

fragment

5

フラグメント識別子

空の文字列

username

ユーザー名

None

password

パスワード

None

hostname

ホスト名(小文字)

None

port

整数としてのポート番号(存在する場合)

None

URLに無効なポートが指定されている場合、port属性を読み取ると、 ValueError が発生します。 結果オブジェクトの詳細については、セクション構造解析結果を参照してください。

netloc属性の角かっこが一致しないと、 ValueError が発生します。

netloc属性の文字で、NFKC正規化(IDNAエンコーディングで使用)の下で/?#@、または:は、 ValueError を発生させます。 解析前にURLが分解されても、エラーは発生しません。

すべての名前付きタプルの場合と同様に、サブクラスには、特に役立ついくつかの追加のメソッドと属性があります。 そのような方法の1つが_replace()です。 _replace()メソッドは、指定されたフィールドを新しい値に置き換える新しいParseResultオブジェクトを返します。

>>> from urllib.parse import urlparse
>>> u = urlparse('//www.cwi.nl:80/%7Eguido/Python.html')
>>> u
ParseResult(scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
            params='', query='', fragment='')
>>> u._replace(scheme='http')
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
            params='', query='', fragment='')

バージョン3.2で変更: IPv6URL解析機能が追加されました。

バージョン3.3で変更: RFC 3986 に従って、フラグメントがすべてのURLスキームで解析されるようになりました( allow_fragment がfalseでない限り)。 。 以前は、フラグメントをサポートするスキームのホワイトリストが存在していました。

バージョン3.6で変更:範囲外のポート番号は、 None を返す代わりに、 ValueError を発生させるようになりました。

バージョン3.8で変更: NFKC正規化でのnetloc解析に影響する文字は、 ValueError を発生させるようになりました。

urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&')

文字列引数として指定されたクエリ文字列を解析します(タイプ application / x-www-form-urlencoded のデータ)。 データは辞書として返されます。 ディクショナリキーは一意のクエリ変数名であり、値は各名前の値のリストです。

オプションの引数 keep_blank_values は、パーセントエンコードされたクエリの空白値を空白文字列として扱うかどうかを示すフラグです。 真の値は、ブランクをブランク文字列として保持する必要があることを示します。 デフォルトのfalse値は、空白の値が無視され、含まれていないかのように扱われることを示します。

オプションの引数 strict_parsing は、解析エラーの処理方法を示すフラグです。 false(デフォルト)の場合、エラーは黙って無視されます。 trueの場合、エラーは ValueError 例外を発生させます。

オプションの encoding および errors パラメーターは、 bytes.decode()メソッドで受け入れられるように、パーセントエンコードされた配列をUnicode文字にデコードする方法を指定します。

オプションの引数 max_num_fields は、読み取るフィールドの最大数です。 設定されている場合、読み取られたフィールドが max_num_fields を超えると、 ValueError がスローされます。

オプションの引数 separator は、クエリ引数を区切るために使用する記号です。 デフォルトは&です。

urllib.parse.urlencode()関数(doseqパラメーターをTrueに設定)を使用して、このような辞書をクエリ文字列に変換します。

バージョン3.2で変更: encoding および errors パラメーターを追加。

バージョン3.8で変更: max_num_fields パラメーターが追加されました。

バージョン3.8.8で変更:デフォルト値&separator パラメーターを追加しました。 Python 3.8.8より前のPythonバージョンでは、クエリパラメータの区切り文字として;&の両方を使用できました。 これは、&をデフォルトの区切り文字として、単一の区切り文字キーのみを許可するように変更されました。

urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&')

文字列引数として指定されたクエリ文字列を解析します(タイプ application / x-www-form-urlencoded のデータ)。 データは、名前と値のペアのリストとして返されます。

オプションの引数 keep_blank_values は、パーセントエンコードされたクエリの空白値を空白文字列として扱うかどうかを示すフラグです。 真の値は、ブランクをブランク文字列として保持する必要があることを示します。 デフォルトのfalse値は、空白の値が無視され、含まれていないかのように扱われることを示します。

オプションの引数 strict_parsing は、解析エラーの処理方法を示すフラグです。 false(デフォルト)の場合、エラーは黙って無視されます。 trueの場合、エラーは ValueError 例外を発生させます。

オプションの encoding および errors パラメーターは、 bytes.decode()メソッドで受け入れられるように、パーセントエンコードされた配列をUnicode文字にデコードする方法を指定します。

オプションの引数 max_num_fields は、読み取るフィールドの最大数です。 設定されている場合、読み取られたフィールドが max_num_fields を超えると、 ValueError がスローされます。

オプションの引数 separator は、クエリ引数を区切るために使用する記号です。 デフォルトは&です。

urllib.parse.urlencode()関数を使用して、このようなペアのリストをクエリ文字列に変換します。

バージョン3.2で変更: encoding および errors パラメーターを追加。

バージョン3.8で変更: max_num_fields パラメーターが追加されました。

バージョン3.8.8で変更:デフォルト値&separator パラメーターを追加しました。 Python 3.8.8より前のPythonバージョンでは、クエリパラメータの区切り文字として;&の両方を使用できました。 これは、&をデフォルトの区切り文字として、単一の区切り文字キーのみを許可するように変更されました。

urllib.parse.urlunparse(parts)
urlparse()によって返されるタプルからURLを作成します。 parts 引数は、任意の6項目の反復可能にすることができます。 これにより、解析されたURLに不要な区切り文字が元々含まれていた場合(たとえば、空のクエリを含む?、RFCはこれらが同等であると述べている場合)、わずかに異なるが同等のURLになる可能性があります。
urllib.parse.urlsplit(urlstring, scheme=, allow_fragments=True)

これは urlparse()に似ていますが、URLからパラメーターを分割しません。 URLのパス部分の各セグメントにパラメーターを適用できる最新のURL構文の場合は、通常、 urlparse()の代わりにこれを使用する必要があります( [X190Xを参照) ] RFC 2396 )が必要です。 パスセグメントとパラメータを分離するには、別の関数が必要です。 この関数は、5項目の名前付きタプルを返します。

(addressing scheme, network location, path, query, fragment identifier).

戻り値は名前付きタプルであり、その項目にはインデックスまたは名前付き属性としてアクセスできます。

属性

索引

価値

存在しない場合の値

scheme

0

URLスキーム指定子

スキームパラメーター

netloc

1

ネットワークロケーション部分

空の文字列

path

2

階層パス

空の文字列

query

3

クエリコンポーネント

空の文字列

fragment

4

フラグメント識別子

空の文字列

username

ユーザー名

None

password

パスワード

None

hostname

ホスト名(小文字)

None

port

整数としてのポート番号(存在する場合)

None

URLに無効なポートが指定されている場合、port属性を読み取ると、 ValueError が発生します。 結果オブジェクトの詳細については、セクション構造解析結果を参照してください。

netloc属性の角かっこが一致しないと、 ValueError が発生します。

netloc属性の文字で、NFKC正規化(IDNAエンコーディングで使用)の下で/?#@、または:は、 ValueError を発生させます。 解析前にURLが分解されても、エラーは発生しません。

RFC3986を更新する WHATWG仕様に従って、ASCII改行\n\r、およびタブ\t文字がURLから削除されます。

バージョン3.6で変更:範囲外のポート番号は、 None を返す代わりに、 ValueError を発生させるようになりました。

バージョン3.8で変更: NFKC正規化でのnetloc解析に影響する文字は、 ValueError を発生させるようになりました。

バージョン3.8.10で変更: ASCII改行およびタブ文字がURLから削除されます。

urllib.parse.urlunsplit(parts)
urlsplit()によって返されるタプルの要素を文字列として完全なURLに結合します。 parts 引数は、任意の5項目の反復可能にすることができます。 これにより、解析されたURLに元々不要な区切り文字(たとえば、?)が含まれていた場合、わずかに異なるが同等のURLになる可能性があります。 空のクエリで; RFCは、これらは同等であると述べています)。
urllib.parse.urljoin(base, url, allow_fragments=True)

「ベースURL」(ベース)を別のURL( url )と組み合わせて、完全な(「絶対」)URLを作成します。 非公式には、これはベースURLのコンポーネント、特にアドレス指定スキーム、ネットワークの場所、およびパス(の一部)を使用して、相対URLに欠落しているコンポーネントを提供します。 例えば:

>>> from urllib.parse import urljoin
>>> urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html')
'http://www.cwi.nl/%7Eguido/FAQ.html'

allow_fragments 引数は、 urlparse()と同じ意味とデフォルトを持っています。

ノート

url が絶対URL(つまり、//またはscheme://で始まる)の場合、 url のホスト名および/またはスキームは結果に存在します。 例えば:

>>> urljoin('http://www.cwi.nl/%7Eguido/Python.html',
...         '//www.python.org/%7Eguido')
'http://www.python.org/%7Eguido'

この動作を望まない場合は、 urlurlsplit()および urlunsplit()で前処理し、可能なスキームおよびを削除します。 ] netloc パーツ。

バージョン3.5で変更:動作が RFC 3986 で定義されたセマンティクスに一致するように更新されました。

urllib.parse.urldefrag(url)

url にフラグメント識別子が含まれている場合は、フラグメント識別子のない url の修正バージョンを返し、フラグメント識別子を別の文字列として返します。 url にフラグメント識別子がない場合は、 url を変更せずに空の文字列を返します。

戻り値は名前付きタプルであり、その項目にはインデックスまたは名前付き属性としてアクセスできます。

属性

索引

価値

存在しない場合の値

url

0

フラグメントのないURL

空の文字列

fragment

1

フラグメント識別子

空の文字列

結果オブジェクトの詳細については、セクション構造解析結果を参照してください。

バージョン3.2で変更: Resultは、単純な2タプルではなく構造化オブジェクトです。

urllib.parse.unwrap(url)
ラップされたURL(つまり、<URL:scheme://host/path><scheme://host/path>URL:scheme://host/path、またはscheme://host/pathの形式の文字列)からURLを抽出します。 url がラップされたURLでない場合、変更なしで返されます。


ASCIIエンコードされたバイトの解析

URL解析関数は元々、文字列のみを操作するように設計されていました。 実際には、適切に引用およびエンコードされたURLをASCIIバイトのシーケンスとして操作できると便利です。 したがって、このモジュールのURL解析関数はすべて、 str オブジェクトに加えて、 bytes および bytearray オブジェクトで動作します。

str データが渡された場合、結果には str データのみが含まれます。 bytes または bytearray データが渡された場合、結果には bytes データのみが含まれます。

1回の関数呼び出しで str データを bytes または bytearray と混合しようとすると、 TypeError が発生します。非ASCIIバイト値では、 UnicodeDecodeError がトリガーされます。

strbytes の間の結果オブジェクトの変換を容易にするために、URL解析関数からのすべての戻り値は、encode()メソッドのいずれかを提供します(結果に strが含まれる場合) データ)またはdecode()メソッド(結果にバイトデータが含まれる場合)。 これらのメソッドのシグニチャは、対応する str および bytes メソッドのシグニチャと一致します(デフォルトのエンコーディングは'utf-8'ではなく'ascii'です)。 それぞれが、 bytes データ(encode()メソッドの場合)または str データ(decode()メソッドの場合)のいずれかを含む対応するタイプの値を生成します。

非ASCIIデータを含む可能性のある不適切に引用された可能性のあるURLを操作する必要があるアプリケーションは、URL解析メソッドを呼び出す前に、バイトから文字への独自のデコードを行う必要があります。

このセクションで説明する動作は、URL解析機能にのみ適用されます。 URL引用関数は、個々のURL引用関数のドキュメントで詳しく説明されているように、バイトシーケンスを生成または消費するときに、独自のルールを使用します。

バージョン3.2で変更: URL解析関数がASCIIエンコードされたバイトシーケンスを受け入れるようになりました


構造化された解析結果

urlparse()urlsplit()、および urldefrag()関数の結果オブジェクトは、 tuple タイプのサブクラスです。 これらのサブクラスは、これらの関数のドキュメントにリストされている属性、前のセクションで説明したエンコードとデコードのサポート、および追加のメソッドを追加します。

urllib.parse.SplitResult.geturl()

元のURLの再結合されたバージョンを文字列として返します。 これは、スキームが小文字に正規化され、空のコンポーネントが削除される可能性があるという点で、元のURLとは異なる場合があります。 具体的には、空のパラメーター、クエリ、およびフラグメント識別子が削除されます。

urldefrag()の結果の場合、空のフラグメント識別子のみが削除されます。 urlsplit()および urlparse()の結果の場合、記載されているすべての変更は、このメソッドによって返されるURLに加えられます。

このメソッドの結果は、元の解析関数に戻されても変更されません。

>>> from urllib.parse import urlsplit
>>> url = 'HTTP://www.Python.org/doc/#'
>>> r1 = urlsplit(url)
>>> r1.geturl()
'http://www.Python.org/doc/'
>>> r2 = urlsplit(r1.geturl())
>>> r2.geturl()
'http://www.Python.org/doc/'

次のクラスは、 str オブジェクトを操作するときの構造化解析結果の実装を提供します。

class urllib.parse.DefragResult(url, fragment)

str データを含む urldefrag()結果の具象クラス。 encode()メソッドは、 DefragResultBytes インスタンスを返します。

バージョン3.2の新機能。

class urllib.parse.ParseResult(scheme, netloc, path, params, query, fragment)
str データを含む urlparse()結果の具象クラス。 encode()メソッドは、 ParseResultBytes インスタンスを返します。
class urllib.parse.SplitResult(scheme, netloc, path, query, fragment)
str データを含む urlsplit()結果の具象クラス。 encode()メソッドは、 SplitResultBytes インスタンスを返します。

次のクラスは、 bytes または bytearray オブジェクトを操作するときの解析結果の実装を提供します。

class urllib.parse.DefragResultBytes(url, fragment)

バイトデータを含む urldefrag()結果の具象クラス。 decode()メソッドは、 DefragResult インスタンスを返します。

バージョン3.2の新機能。

class urllib.parse.ParseResultBytes(scheme, netloc, path, params, query, fragment)

バイトデータを含む urlparse()結果の具象クラス。 decode()メソッドは、 ParseResult インスタンスを返します。

バージョン3.2の新機能。

class urllib.parse.SplitResultBytes(scheme, netloc, path, query, fragment)

バイトデータを含む urlsplit()結果の具象クラス。 decode()メソッドは、 SplitResult インスタンスを返します。

バージョン3.2の新機能。


URLの引用

URL引用関数は、プログラムデータを取得し、特殊文字を引用して非ASCIIテキストを適切にエンコードすることにより、URLコンポーネントとして安全に使用できるようにすることに重点を置いています。 また、これらの操作を逆にして、URLコンポーネントのコンテンツから元のデータを再作成することもサポートしています(そのタスクが上記のURL解析関数でまだカバーされていない場合)。

urllib.parse.quote(string, safe='/', encoding=None, errors=None)

%xxエスケープを使用して、 string の特殊文字を置き換えます。 文字、数字、および文字'_.-~'が引用されることはありません。 デフォルトでは、この関数はURLのパスセクションを引用することを目的としています。 オプションの safe パラメーターは、引用符で囲まない追加のASCII文字を指定します。デフォルト値は'/'です。

string は、 str または bytes のいずれかです。

バージョン3.7で変更: URL文字列を引用するために RFC 2396 から RFC 3986 に移動しました。 「〜」は、予約されていない文字のセットに含まれるようになりました。

オプションの encoding および errors パラメーターは、 str.encode()メソッドで受け入れられる非ASCII文字の処理方法を指定します。 encoding のデフォルトは'utf-8'です。 errors のデフォルトは'strict'です。つまり、サポートされていない文字は UnicodeEncodeError を発生させます。 stringbytes の場合、または TypeError が発生する場合は、 encoding および errors を指定しないでください。

quote(string, safe, encoding, errors)quote_from_bytes(string.encode(encoding, errors), safe)と同等であることに注意してください。

例:quote('/El Niño/')'/El%20Ni%C3%B1o/'を生成します。

urllib.parse.quote_plus(string, safe=, encoding=None, errors=None)

quote()と同様ですが、URLに入力するクエリ文字列を作成するときにHTMLフォーム値を引用するために必要な場合は、スペースをプラス記号に置き換えます。 safe に含まれていない限り、元の文字列のプラス記号はエスケープされます。 また、 safe のデフォルトは'/'ではありません。

例:quote_plus('/El Niño/')'%2FEl+Ni%C3%B1o%2F'を生成します。

urllib.parse.quote_from_bytes(bytes, safe='/')

quote()と同様ですが、 str ではなく bytes オブジェクトを受け入れ、文字列からバイトへのエンコードを実行しません。

例:quote_from_bytes(b'a&\xef')'a%26%EF'を生成します。

urllib.parse.unquote(string, encoding='utf-8', errors='replace')

%xxエスケープを同等の1文字に置き換えます。 オプションの encoding および errors パラメーターは、 bytes.decode()メソッドで受け入れられるように、パーセントエンコードされた配列をUnicode文字にデコードする方法を指定します。

stringstr である必要があります。

encoding のデフォルトは'utf-8'です。 errors のデフォルトは'replace'です。これは、無効なシーケンスがプレースホルダー文字に置き換えられることを意味します。

例:unquote('/El%20Ni%C3%B1o/')'/El Niño/'を生成します。

urllib.parse.unquote_plus(string, encoding='utf-8', errors='replace')

unquote()と同様ですが、HTMLフォーム値の引用符を解除するために必要な場合は、プラス記号をスペースに置き換えます。

stringstr である必要があります。

例:unquote_plus('/El+Ni%C3%B1o/')'/El Niño/'を生成します。

urllib.parse.unquote_to_bytes(string)

%xxエスケープを同等のシングルオクテットに置き換え、 bytes オブジェクトを返します。

string は、 str または bytes のいずれかです。

str の場合、 string 内のエスケープされていない非ASCII文字はUTF-8バイトにエンコードされます。

例:unquote_to_bytes('a%26%EF')b'a&\xef'を生成します。

urllib.parse.urlencode(query, doseq=False, safe=, encoding=None, errors=None, quote_via=quote_plus)

str または bytes オブジェクトを含む可能性のあるマッピングオブジェクトまたは2要素タプルのシーケンスを、パーセントエンコードされたASCIIテキスト文字列に変換します。 結果の文字列を urlopen()関数を使用したPOST操作の data として使用する場合は、バイトにエンコードする必要があります。そうしないと、になります。 TypeError

結果の文字列は、'&'文字で区切られた一連のkey=valueペアであり、キーの両方が quote_via [を使用して引用されます。 X164X]関数。 デフォルトでは、 quote_plus()を使用して値を引用します。つまり、スペースは'+'文字として引用され、「/」文字は%2Fとしてエンコードされます。 GETリクエストの標準(application/x-www-form-urlencoded)。 quote_via として渡すことができる代替関数は、 quote()です。これは、スペースを%20としてエンコードし、「/」文字をエンコードしません。 引用符を最大限に制御するには、quoteを使用し、 safe の値を指定します。

2要素タプルのシーケンスが query 引数として使用される場合、各タプルの最初の要素はキーであり、2番目の要素は値です。 値要素自体はシーケンスにすることができ、その場合、オプションのパラメーター doseqTrueと評価されると、'&'で区切られた個々のkey=valueペアになります。 ]は、キーの値シーケンスの要素ごとに生成されます。 エンコードされた文字列内のパラメーターの順序は、シーケンス内のパラメータータプルの順序と一致します。

safeencoding 、および errors パラメーターは、 quote_viaencoding および)に渡されます。 errors パラメーターは、クエリ要素が str )の場合にのみ渡されます。

このエンコードプロセスを逆にするために、 parse_qs()parse_qsl()がこのモジュールで提供され、クエリ文字列をPythonデータ構造に解析します。

urllibの例を参照して、URLのクエリ文字列またはPOSTのデータを生成するためにurlencodeメソッドを使用する方法を確認してください。

バージョン3.2で変更:クエリパラメータはバイトと文字列オブジェクトをサポートします。

バージョン3.5の新機能: quote_via パラメーター。

も参照してください

WHATWG -URL生活水準
URL、ドメイン、IPアドレス、application / x-www-form-urlencoded形式、およびそれらのAPIを定義するURL標準のワーキンググループ。
RFC 3986 -ユニフォームリソース識別子
これは現在の標準(STD66)です。 urllib.parseモジュールへの変更は、これに準拠する必要があります。 特定の逸脱が観察される可能性があります。これは主に下位互換性の目的であり、主要なブラウザで一般的に観察される特定の事実上の解析要件のためです。
RFC 2732 -URL内のリテラルIPv6アドレスの形式。
これは、IPv6URLの解析要件を指定します。
RFC 2396 -URI(Uniform Resource Identifiers):一般的な構文
ユニフォームリソースネーム(URN)とユニフォームリソースロケーター(URL)の両方の一般的な構文要件を説明するドキュメント。
RFC 2368 -mailtoURLスキーム。
mailtoURLスキームの解析要件。
RFC 1808 -相対ユニフォームリソースロケーター
このRequestFor Commentsには、国境のケースの処理を管理するかなりの数の「異常な例」を含む、絶対URLと相対URLを結合するためのルールが含まれています。
RFC 1738 -ユニフォームリソースロケーター(URL)
これは、絶対URLの正式な構文とセマンティクスを指定します。