본문 바로가기

BLOG/웹크롤링

[웹크롤링] 에러가 나는 경우 try / except 문으로 해결하기

 

웹 페이지를 크롤링할 때, 예를 들어, 텍스트를 추출하는데, 특정 부분에 텍스트가 없다면 에러가 날 수 있습니다.

또는 이미지를 크롤링하기 위해 이미지의 url을 크롤링하는데, 만약 url이 없는 이미지라면 에러가 날 수 있습니다.

 

이러한 경우 모두 try / except 문으로 코드를 작성하면 해결할 수 있는데요,

try 문은 실행 코드를 입력하고 에러가 발생했을 때 멈추지 않고 다른 코드를 수행하도록 할 수 있습니다.

사용방법은 다음과 같습니다.

 

try :
    에러가 날 수 있는 코드
except 에러이름 :     
     에러 발생 시 명령할 코드
else :
     에러가 발생하지 않을 때 실행할 코드

 

한편, 위 코드에서, 에러 이름을 공백으로 두면, 모든 에러에 대해 처리됩니다.

 

 

그렇다면, 코드로 어떻게 작성해야 하는지 알아보도록 하겠습니다.

먼저, 예를 들어, 특정 페이지에서 텍스트를 가져오는 코드가 다음과 같다고 가정해보겠습니다.

 

title = li.find('div',textcontents)

 

태그가 'div', 클래스가 'textcontents' 인 요소를 찾는 코드인데요, 만약 해당 태그가 없다면 'AttributeError' 라는 에러가 납니다. 

 

그렇다면, 해당 태그가 없어서 'AttributeError' 에러가 발생했을 때, 빈 텍스트로 저장하고 넘어가는 try 문을 작성해보도록 하겠습니다.

 

try : 
    title = li.find('div',textcontents) 
    
except AttributeError : 
    print(title.replace("\n","") 
    
else : 
    pass

 

위 코드를 보면, try 문에 에러가 발생할 수 있을 코드를 입력해주었고,

except 문에는 에러가 발생했을 때의 실행할 코드, else 문에는 에러가 나지 않았을 때의 코드로 pass를 입력해주었습니다.

 

이렇게 try문의 형식을 잘 기억해두면 크롤링에서 에러에 대비하여 유용하게 사용할 수 있답니다.