PythonでURLを結合する際には、os.path.join
ではなくurlparse.urljoin
を使用することが推奨されています。これは、os.path.join
を使用すると、期待した結果が得られない場合があるからです。
例えば、次のようなコードを考えてみましょう。
import os.path
channel_urls = ['/channel/UCVrJcoR8hUN9Rn7uPI4z6NQ']
for i in channel_urls:
root_url = 'https://www.youtube.com'
channel_url = ('%s' % i)
channel_about_url = urlparse.urljoin(youtube_url, channel_url, 'about')
print(self.open_channel_url) # /channel/UCVrJcoR8hUN9Rn7uPI4z6NQ/about
このコードでは、os.path.join
を使用してURLを結合していますが、結果のURLにhttps://www.youtube.com
が含まれていません。
一方、urlparse.urljoin
を使用すると、次のようになります。
try:
import urlparse
except ImportError:
import urllib.parse as urlparse
channel_urls = ['/channel/UCVrJcoR8hUN9Rn7uPI4z6NQ']
for i in channel_urls:
root_url = 'https://www.youtube.com'
channel_url = ('%s' % i)
channel_about_url = urlparse.urljoin(youtube_url, channel_url, 'about')
print(self.open_channel_url) # https://www.youtube.com/channel/UCVrJcoR8hUN9Rn7uPI4z6NQ/about
このコードでは、urlparse.urljoin
を使用してURLを結合しており、結果のURLにhttps://www.youtube.com
が正しく含まれています。
したがって、PythonでURLを結合する際には、urlparse.urljoin
を使用することが推奨されています。