Tech이야기~!
welcom 자세히보기

Computer/Python

크롤링(스크래핑) 기초_part1

Enhold 2020. 3. 23. 00:51

대표적인 표준 모듈

Modul

Acitive

re

정규표현식

datetime

날짜와 시간

collections

여러가지 콜렉션 자료형

math

수학 관련

random

무작위 처리

itertools

반복 가능한 객체에 대한 조작

sqlite3

SQLite데이터베이스

csv

CSV조작

json

JSON조작

os

OS 관련 조작

os.path

파일 또는 디렉터리 등의 경로와 관련된 조작

multiprocessing

멀티 프로세스를 사용한 병렬 처리

subprocess

다른 프로세스 실행

urllib

URL 관련 조작

unittest

단위 테스트

pdf

파이썬 디버거

sys

파이썬 인터프리터 관련 변수와 함수

 

URL읽기

Urllib.request함수는 HTTPResponse자료형의 개체를 반환한다. 

이객체는 파일 객체이므로 open()함수로 반환되는 파일 객체처럼 다루면 된다. 

URL 읽기
>>>from urllib.request import urlopen
>>>f = urlopen('http://www.naver.com/')
>>>type(f)
>>>f.read()
>>>f.status
>>>f.getheader('Content-Type')

 

 

read()메서드로 HTTP응답 본문(bytes 자료형)을 추출

  • HTTP는 자동으로 닫히므로 close()함수를 호출하지 ㅇ낳아도 된다.

 

f.getheader #HTTP헤더의 값을 추출

* 한국어가 포홤된 페이지는 일밙거으로 다음과 같은 Content-Type헤더를 갖고 있다. 

  • text/html; charset=UTF-8, cpc949

  • text/html; charset=EUC-KR

 

인코딩이 명시되지 않으면 UTF-8을 사용하면된다. 


Meta tag 인코딩 방식 추출

HTTP 헤더에서 추출하는 인코딩 정보가 항상 맞는건 아니다. 웹서버 설정을 제대로 하지 않았다면 Content- Type헤더의 값과 실제 사용되고 있는 인코딩 형식이 다를 수 있다. 

일반적인 브라우저 HTML내부의  meta태그 또는 응답 본문의 바이트열도 확인해서 최종적인 인코딩 방식을 결정하고 화면에 출력한다. 

디코딩 처리 때 UnicodeDecodeError가 발생한다면 이러한 처리를 모방해서 구현하면 해결할 수 있다 

 

형식

  • <meta charset=”utf-8”>

  • <meta http-equiv=”Content-Type” content=”text/html; charset=EUC_KR”>