크롤링시 한글깨짐
소프트웨어학과 홈페이지를 크롤링해보려고 했는데 페이지 소스를 읽는 과정에서 한글이 외계어로 나오는
<!--------------------- Æ˾÷ ½ÃÀÛ ---------------------->
<!--------------------- Æ˾÷ ³¡ --------------------->
<div id="errorMessage" style="display:none;position:absolute;"></div>
</body>
</html>
이런식의 오류가 나왔다. 그래서 인터넷을 찾아보니
- 어떤 인코딩인지 확인하기
>>> resp = requests.get('http://naver.com') # 네이버 홈
>>> resp.encoding
'UTF-8'
>>> resp = requests.get('http://finance.naver.com') # 증권
>>> resp.encoding
'ISO-8859-1'
유니코드 인코딩 - UTF-8
한글 인코딩 - EUC-KR
영문 인코딩 - ISO-8859-1
소프트웨어학과 같은경우 영문 인코딩 ISO-8859-1이였다.
- 인코딩 변환해주기
객체.encoding을 이용하여 euc-kr로 바꿔주면 된다.
import requests
resp = requests.get('http://finance.naver.com/')
resp.raise_for_status()
resp.encoding=None # None 으로 설정
#resp.encoding='euc-kr' # 한글 인코딩
html = resp.text
print(html)
<!--------------------- 팝업 시작 ---------------------->
<!--------------------- 팝업 끝 --------------------->
<div id="errorMessage" style="display:none;position:absolute;"></div>
</body>
</html>