【Python】urllib.parseモジュールによるURL解析

Python スクレイピング モジュール

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の例
schemeURL scheme specifierhttps
netlocNetwork locationhibiki-press.tech
pathHierarchical path /learn_prog/
parametersParameters for last path elementNone
queryQuery component None
fragment Fragment identifierNone

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を生成する

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

シェアする
ひびきをフォローする
Hbk project