Pythonで任意のURLリンクが有効かどうかをチェックする方法

環境

  • Windows 10
  • Python 3.10.1

結論

urllibモジュールのrequest.urlopenメソッドを使用する

実装

呼び出し側

  • urlオブジェクトを作成し、それをCheckIsValidUrlServiceに渡す

tests\test_check_is_valid_url_service.py

from shared.Application.check_is_valid_url_service import CheckIsValidUrlService
from shared.Domain.xurl import XUrl

def test_任意のurlが有効かどうかチェックできること():
    x_url = XUrl("https://maasaablog.com/")
    is_valid_url = CheckIsValidUrlService().execute(xurl=x_url)
    assert is_valid_url == True

def test_無効なurlの場合はFalseを返すこと():
    x_url = XUrl("https://hfefejjekfogehoge.com/")
    is_valid_url = CheckIsValidUrlService().execute(xurl=x_url)
    assert is_valid_url == False
  • urlオブジェクトを受け取り、try節でurlを開く
  • 無効なurlの場合は例外が生じるので、これを受けてFalseを返す

shared\Application\check_is_valid_url_service.py

import urllib.request, urllib.error
from shared.Domain.xurl import XUrl

class CheckIsValidUrlService:
    def execute(self, xurl: XUrl):
        try:
            f = urllib.request.urlopen(xurl.get_href())
            return True
        except:
            print(f"{xurl.get_href()}は無効なurlです")
            return False
        finally:
            if "f" in locals():
                f.close()

以上です

Python学習におすすめの書籍

独習Python/山田祥寛【3000円以上送料無料】
bookfan 1号店 楽天市場店
¥ 3,300(2022/08/04 17:32時点)
タイトルとURLをコピーしました