スクレイピング 中級

89. 相対URLを絶対URLに変換する

相対URLだけでは使えないことがある

ページ内のリンクは、'https://example.com/page'のような完全なURL(絶対URL)だけでなく、'/page'や'page.html'のような、今いるページを基準にした短い書き方(相対URL)で書かれていることがよくあります。相対URLのままでは別のページから直接アクセスできないため、元のページのURLと組み合わせて絶対URLに変換する必要があります。

これには標準ライブラリのurllib.parseモジュールにあるurljoin()関数が使えます。

サンプルコード

from urllib.parse import urljoin

base_url = 'https://example.com/blog/'
relative_link = 'article.html'

absolute_url = urljoin(base_url, relative_link)
print(absolute_url)
urljoin(基準となるURL, 相対パス)と書くことで、相対パスを正しい絶対URLに変換できます。前のレッスンでget('href')から取得した値をそのままurljoin()に渡す、という使い方がよくあります。

📝 練習問題

練習問題:base_url = 'https://example.com/shop/item.html'、relative_link = 'detail.html'として、urljoin()で絶対URLを求めて表示してください。