urllib.parseモジュールは、URLの文字列を解析するPythonの標準ライブラリです。
URLを構成要素毎に分解して取り出したり、相対URLから絶対URLを生成するのに使います。WebスクレイピングでダウンロードするURLを指定する際にも使えます。
今回は、このモジュールの基本的な使い方についてまとめます。(兼 自分用の備忘メモ)
# 2020/3/22 記事更新
確認した環境
- OS: Ubuntu16.04LTS
- Python: 3.7.4
urllib.parseモジュール
urllib.parseモジュール は、URL文字列を各構成要素に分解したり、URLの構成要素を結合してURL文字列を作成します。相対URLを絶対URLへ変換するのにも使われます。
URLの構成要素
URLは一般的な構成として、
[scheme]:// [netloc] / [path] ; [parameters] ? [query] # [fragment]
と書けます。(詳細はRFC1808 Section 2.1 URL Syntactic Components を参照)
当記事のURL(‘https://hibiki-press.tech/learn_prog/’)をこれに当てはめてみました。
コンポーネント名 | 説明 | 当記事URLの例 |
---|---|---|
scheme | URL scheme specifier | https |
netloc | Network location | hibiki-press.tech |
path | Hierarchical path | /learn_prog/ |
parameters | Parameters for last path element | None |
query | Query component | None |
fragment | Fragment identifier | None |
URL文字列を各構成要素に分解する
urlparse()メソッド は引数として与えられたURLを6つの構成要素に分解します。
返り値は6つの構成要素のタプル(正確にはタプルのサブクラスとのこと)です。
>>> from urllib.parse import urlparse
>>> url = urlparse('https://hibiki-press.tech/learn_prog')
>>> url
ParseResult(scheme='https', netloc='hibiki-press.tech', path='/learn_prog', params='', query='', fragment='')
>>> url.netloc
'hibiki-press.tech'
>>> url.path
'/learn_prog'
URLの構成要素を結合する
urljoin()メソッド を使います。
第一引数に基底URL(base URL)を、第二引数に相対URLなどの別URLを指定すると、これらを結合して絶対URLを作成します。
>>> from urllib.parse import urljoin
# 例その1
>>> urljoin('https://hibiki-press.tech/learn_prog/', 'test.html')
'https://hibiki-press.tech/learn_prog/test.html'
# 例その2(最後の/が無いとファイル名とみなされる)
>>> urljoin('https://hibiki-press.tech/learn_prog/sample.html', 'test.html')
'https://hibiki-press.tech/learn_prog/test.html'
まとめ
urllib.parseモジュールを用いて、URLの分解、および絶対URLの生成についてまとめました。
- urlparse()メソッド:URLを6つの構成要素に分解する
- urljoin()メソッド:基底URLと相対URLを組み合わせて絶対URLを生成する