내 웹 서비스 페이지가 에러나는 경우(X)  웹 서비스에서 외부 URL을 호출할 때 에러나는 경우(O) 처리 방법

 

웹 서비스를 개발하다가 외부 URL(기사, 블로그 등)을 입력해 활용하는 기능을 추가하려는데,

페이지를 직접 접속하면 잘 열리지만, 서비스에 URL을 넣고 호출하면 error code가 나오면서 의도한 기능이 수행되지 않는 경우가 생긴다.

 

이 때는 직접 에러 페이지(403, 404, 500, 503 등)을 접속해서 확인할 수가 없으니, 해당 페이지의 예외처리를 따로 해줄 필요가 있다.

 

 

다만, 이 예시에서는 실제로 접속해서 에러를 확인할 수 있는 페이지를 다뤄보도록 한다.

이렇게 에러 페이지가 나오는 경우, html코드로 판단해 처리할 수 있다.

 

 

F12를 눌러 개발자 도구를 열면, <head> > <title>에 "404 Not Found"와 같이 에러코드가 적히게 된다.

그렇기 때문에, 페이지의 html 정보를 가져와서 title이 error code라면, 특정 행동을 하도록 코드를 짜주면 된다.

 

from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

url = 'https://www.youtube.com/dsaqwd123'

try:
    open = urlopen(url)
    soup = BeautifulSoup(open, 'html.parser')
    print(soup)

except HTTPError as e:
    error_html = e.read()
    soup = BeautifulSoup(error_html, 'html.parser')

    title = soup.find('title').text
    print(title) # 404 Not Found

# if title == '404 Not Found':
#     에러 시 처리

 

크롤링 시 사용하는 BeautifulSoup으로 <title>에 있는 정보를 가져올 수 있고, 해당 부분의 text가 에러 코드일 경우의 처리를 해준다.

+ Recent posts