url処理

3791 ワード

一、url処理
python 3のurl処理パッケージ名はurllibで、主な機能モジュールは以下の通りです。errorモジュールparseモジュールrequestモジュールreponseモジュールrobotparseモジュール
1.1、url解析
例1:
from urllib.parse import urlparse
url="http://alice:[email protected]:80/%7Ealice/python.cgi?query=text#sample"
print(urlparse(url))     #  urlparse    urlparse  ,        urljoin,urlsplit urlunsplit 。
結果は以下の通りです。PaseResult(scheme='http'、netloc='alice:[email protected]:80',path='/%7 Ealice/python.cgi',params=',query='query=text',fragment='sample')
説明:1’urlparseはurl定義に対して六元グループを採用しています。scheme://netloc/path;parameters?query钮fragment。
>>> r.scheme
'http'
>>> r.netloc
'alice:[email protected]:80'
>>> r.path
'/%7Ealice/python.cgi'
>>> r.params
''
>>> r.query
'query=text'
>>> r.fragment
'sample'
>>> r.username
'alice'
>>> r.password
'secret'
>>> r.hostname
'www.hostname.com'
>>> r.port
80
>>> r.geturl()
'http://alice:[email protected]:80/%7Ealice/python.cgi?query=text#sample'
>>> r2=urlparse("www.pyton.or/about",'http')
>>> r2
ParseResult(scheme='http', netloc='', path='www.pyton.or/about', params='', query='', fragment='')
まとめ:
  • 六元グループの各値は文字列であり、URLに存在しない場合は空の値である。ここでは、ネットワークアドレス部分は、サーバアドレスとポートアドレスをさらに区別しておらず、文字列
  • として機能している。
  • がURLを解析する場合、すべての%変換子は処理されません。区切り記号は、パスの最初の開始斜線を除いて削除されます。
  • urlparse方法で返されるオブジェクトの属性は、scheme、netlocl、path、query(クエリ部分)、params(パラメータ)である。他にも二つのオプションパラメータがあります。schemeとallow_。fragments(アドレスをスライスすることができるかどうかを示すデフォルト値True)1.2、urlのつづり合わせ
    >>> from urllib.parse import urljoin,urlsplit,urlunsplit #          
    >>> r=urljoin("http://www.baidu.com","ice.html") #     url   url
    >>> r
    'http://www.baidu.com/ice.html'
    説明:
  • >>> help(urljoin)
    Help on function urljoin in module urllib.parse:
    urljoin(base, url, allow_fragments=True)
        Join a base URL and a possibly relative URL to form an absolute
        interpretation of the latter.
    相対URLにプロトコルフィールドがある場合は、相対URLを優先的に使用します。そうでない場合は、絶対URLのプロトコルフィールドを使用します。例えば:
    >>> r=urljoin('http://www.python.org','ftp://www.python.org/faq')
    >>> r                 #            
    'ftp://www.python.org/faq' 
    >>> r=urljoin('http://www.python.org','www.python.org/faq')
    >>> r               #                ,       
    'http://www.python.org/www.python.org/faq'
     >>>r=urljoin("http://www.python.org/faq","http://www.python.org/ask")    #  url   url             ,     url           
    >>> r****
    'http://www.python.org/ask'
    1.3、url分解
    urlsplit urlparse  ,         ,         。  urlparse    param  ,           。
    >>> from urllib.parse import urlsplit
    >>> urlsplit("http://www.python.org:80/faq.cgi?src=file")
    SplitResult(scheme='http', netloc='www.python.org:80', path='/faq.cgi', query='src=file', fragment='')  #         
    urlunsplitの方法はurlsplitの逆の方法です。は、urlsplitによって生成されたスプリアスオブジェクトをURL文字列に結合するものです。この方法を組み合わせて、URLを有効にフォーマットできます。特殊文字はこの過程で変換されます。
    >>> >>> from urllib.parse import urlunsplit
    >>> r=urlunsplit(("http","www.python.org","faq","","")) #           ,     rulunsplit  。
    >>> r
    'http://www.python.org/faq'