본문 바로가기
1% 이해하기 시리즈/Python

[Python] 웹 크롤링 - 한글 문자 텍스트 깨짐 현상 해결과정

by TLOWAC 2020. 5. 7.

사건의 발단

Visual Studio Code 에서 Python으로 웹 크로링 예제를 따라하면서 공부하고 있었다.

Youtube나 예제들에서는 '똑' 하고 넣으면, '툭'하고 튀어나오는데.. 이런 * 같은 

 

하.. 에러로 밤새 지세우는게 하루이틀도 아니고 . . .

이제는 담담하게 고치러 간다.

 

에러가 발생한 개발 환경은 아래와 같다.

OS : window 10

IDE : Visual Studio Code

Python : 3.7(version)

 

아래의 소스코드는 크롤링 예제 코드 이다.

import urllib.request
from bs4 import BeautifulSoup


#크롤링하고 싶은 웹 페이지의 url 
url = "" #url은 임의로 생략함

#url을 열고 내용을 읽어 온다.
html = urllib.request.urlopen(url).read()
#html.parser를 사용해서 가져온 html 파일을 파싱한다.
soup = BeautifulSoup(html, 'html.parser')

#파싱한 html 파일에서 원하는 요소를 찾는다.
title = soup.find_all(class_='sh_blog_title')


#JS의 map와 동일한 기능
for i in title:
    print(i.attrs['title'])
    #attrs는 attribute 뜻한다.
    #속성값이 'title'인 값을 출력한다.
    


 

예상 외 전개

크롤링으로 네이버 글들의 타이틀을 가져다가 출력하는 과정에서 한글이 깨지는 문제가 발생했다.

한글 깨짐 현상에 대한 부분은 기껏해야 'utf-8' , 'ecu-kr' 정도만 알고 있었기 때문에 Google에 검색을 *나 했다.


 

시도한 방법들

 

url에서 html을 읽어 올때, 'utf-8'로 읽어옴 [ Error 해결 : 실패  ]

^^ 안됨. ( 1트 )

#변경 전
html = urllib.request.urlopen(url).read()

#변경 후
html = urllib.request.urlopen(url).read().decode('utf8')


 

url에서 html을 읽어 올때, 'euc-kr'로 읽어옴 [ Error 해결 : 실패  ]

 또 ^^ 안됨. ( 2트 )

#변경 전
html = urllib.request.urlopen(url).read()

#변경 후
html = urllib.request.urlopen(url).read().decode('euc-kr')


 

구글링해서 찾은 방법 [ Error 해결 : 실패 ]

또 ^^ ㅇㄴ됨. ( 3트 )

사진에서 조차 한글 깨짐이 한치 흐트러짐 없이 똑같은 것을 확인 할 수 있었다.

#변경 전
html = urllib.request.urlopen(url).read()

#변경 후
html = urllib.request.urlopen(url).read().decode('euc-kr','replace').encode('utf-8','replace')


 

Visual Studio Code 인코딩 방식 변경 [ Error 해결 : 실패 ]

" 이쯤 되면, 이거는 IDE 문제다." 라는 생각이 스멀스멀 기어 올라왔다. ( 별표 해놓자 ) 

마지막으로 Visual Studio Code 의 인코딩 방식을 기존 'utf-8' 에서 'ecu-kr'로 변경 해보았다.


IDE 변경 [ Error 해결 : 성공 ]

IDE 설정 문제로 인해서 Visual Studio Code 에서는 한글 텍스트가 깨져서 출력되는것 같다.

Python을 설치할때 같이 설치 되는 Default IDE를 사용한 경우

아래와 같이 문제 없이 한글 텍스트가 출력되는 것을 확인 할 수 있었다.

 

옛날 같았으면 이 에러를 해결하기 위해 1주일 밤도 샜겠지만, 지금은 아니다... 암 . . (끄덕끄덕)

그러니까, 나는 여기까지만 하겠다. 

 

원인 : Visual Studio Code 설정 값 문제로 인한 한글 텍스트 출력값의 깨짐.

과정 : 구글링.

결과 : IDE를 Visual Studio Code 에서 Default IDE로 변경.

p.s Visual Studio Code에서의 해결법을 아시는 분은 댓글 달아주세요..

 

댓글