Python 웹 스크래핑

Python으로 웹에 있는 자료들을 스크래핑 하는 방법을 알아봅니다.


수강중

11. 인코딩 실습

웹사이트 크롤링 시, 가끔 인코딩 오류가 발생한다. 이는 웹사이트의 인코딩 형식을 강제 지정함으로서 해결할 수 있다.

import requests
import lxml.html

대한민국 법원 홈페이지를 긁어온다.

res = requests.get('https://www.scourt.go.kr/scourt/index.html')

res.encoding : 웹사이트의 인코딩 형식을 확인할 수 있다.

res.encoding
'ISO-8859-1'

서유럽어를 표현하는 ISO-8859-1로 인코딩이 잘못 인식되었다.

문제를 확인하기 위하여 웹페이지의 제목을 추출해본다.

root = lxml.html.fromstring(res.text)
for e in root.cssselect('title'):
    print(e.text_content())
´ëÇѹα¹ ¹ý¿ø

'대한민국 법원' 대신 이상하게 깨진 글자들이 표시된다. 인코딩을 잘못 인식했기 때문이다.

수동으로 인코딩을 지정해야 하는데, 한글을 표시하는 인코딩은 cp949 아니면 utf8 둘 중에 하나이다. 하나씩 시도해본다.

먼저 인코딩을 cp949로 변경한다.

res.encoding = 'cp949'

다시 웹페이지 제목을 추출하면 잘 출력된다.

root = lxml.html.fromstring(res.text)
for e in root.cssselect('title'):
    print(e.text_content())
대한민국 법원