일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 구글CSS
- vuejs입문
- 자바스크립트
- 구글스타일가이드
- CSS로딩
- css rule
- vueJS
- 스타일가이드
- javascript
- 개발회고
- Vue.js
- 투두리스트
- 코딩가이드
- 웹스크래핑
- 파이썬
- CSS애니메이션
- google style guide
- python
- to do list
- 자기개발
- @keyframes
- css규칙
- vue-cli
- 코딩규칙
- html제거
- MariaDB
- 프레임워크
- 로딩UI
- 뉴스수집
- 코딩컨밴션
- Today
- Total
코드공부방
[웹크롤링] 웹사이트 인코딩 확인 및 디코딩하기 (python) 본문
[웹크롤링, 웹스크래핑]
웹사이트 인코딩 확인 및 디코딩하기 (python)
파이썬 urllib을 사용해 스크래핑을 할때, HTTP헤더와 HTML의 meta 태그를 기반으로 웹페이지 인코딩 방식을 판별해야 한다. 인코딩 방식을 제대로 판별하지 않으면 문자가 깨져보여 정확한 데이터를 추출할 수 없다.
먼저 urllib.request 모듈을 사용하여 네이버 웹페이지 소스를 추출해보자.
from urllib.request import urlopen
f = urlopen('https://naver.com')
f.read()
위 코드를 실행하면 아래와 같은 결과값을 얻을 수 있다.
한글이 모두 깨져서 출력이 된다. HTTPResponse.read() 메소드로 추출한 값은 bytes 자료형이므로 원하는 정보를 얻으려면 문자열로 디코딩해야 한다. 최근에는 HTML5의 기본 인코딩 방식인 UTF-8로 작성된 웹페이지가 많아 UTF-8로 지정하는 것도 좋지만, 혹시 모를 상황에 대비해야 하니 HTTP 헤더를 분석하여 적절한 인코딩 방식으로 디코딩 하는 것이 좋다.
HTTP 응답의 Content-Type 헤더를 참조하면 해당 페이지에 사용되고 있는 인코딩 방식을 알아낼 수 있는데, 보통 'text/html', 'text/html; charset=UTF-8', 'text/html; charset=EUC-KR' 과 같은 헤더를 갖고 있다. 'charset'뒤에 적혀 있는 'UTF-8', 'EUC-KR'이 해당 페이지에 사용된 인코딩 방식이다. 이 값을 추출하기 위해 정규식을 사용해도 되지만 get_content_charset() 메소드를 사용하면 더욱 간단하게 인코딩 방식을 얻어올 수 있다.
from urllib.request import urlopen
f = urlopen('https://naver.com')
# 인코딩 방식 추출(명시되어 있지 않으면 utf-8을 사용한다.)
encoding = f.info().get_content_charset(failobj='utf-8')
# 추출한 인코딩 방식으로 디코딩
text = f.read().decode(encoding)
# 출력
print(text)
(Javascript, Python) 문장에서 HTML 코드, 태그 제거
문장에서 HTML 코드 제거 (javascript, python) 웹크롤링을 하거나 또는 가공된 데이터를 가져다 쓰다보면 데이터 내에 HTML코드가 삽입되어 있어 이를 제거하고 싶은 경우가 생길 수 있다. 이때 아
code-study.tistory.com
Python 텍스트(*.txt) 파일 읽고 출력(print)하기
텍스트(*.txt) 파일 불러와(import) 출력(print)하기 python에서 text파일 읽어와 print 테스트를 하기 위해 샘플 text파일을 생성했다. (파이썬 파일과 동일경로에 생성) 1. 출력하기 방법1 > 내장함수 사
code-study.tistory.com
중간 보고 : 패스트캠퍼스 - 파이썬(Python) 웹개발 올인원 패키지 잘 하고 있니?
정말 오랜만에 블로그에 글을 남긴다. 년 초반에는 거의 1일 1포스팅을 할 정도로 열정이 넘쳤었는데, 조금씩 바쁘다는 핑계로 멀리하다가 이제는 아예 관리를 안하는 수준까지 왔다. (블로그의
code-study.tistory.com