본문 바로가기

Python

BeautifulSoup parsers : 소스코드 해석기

웹 크롤링, 즉 외부데이터 수집을 위해 BeautifulSoup 을 이용하다보면 어떤 parser (소스코드 해석기)를 이용할지 고민하는 경우가 있습니다.

이참에 한번 정리하고 넘어갈께요.


아래는 BeautifulSoup 공식 웹사이트에 나온 설명 입니다.


ParserTypical usageAdvantagesDisadvantages
Python’s html.parserBeautifulSoup(markup, "html.parser")
  • Batteries included
  • Decent speed
  • Lenient (As of Python 2.7.3 and 3.2.)
  • Not as fast as lxml, less lenient than html5lib.
lxml’s HTML parserBeautifulSoup(markup, "lxml")
  • Very fast
  • Lenient
  • External C dependency
lxml’s XML parserBeautifulSoup(markup, "lxml-xml") BeautifulSoup(markup, "xml")
  • Very fast
  • The only currently supported XML parser
  • External C dependency
html5libBeautifulSoup(markup, "html5lib")
  • Extremely lenient
  • Parses pages the same way a web browser does
  • Creates valid HTML5
  • Very slow
  • External Python dependency


해석을 하자면,


해석기사용 예

장점

단점

html.parser

(Python 자체)

BeautifulSoup(markup, "html.parser")
  • 다양한 기능 포함
  • 속도 쓸만함
  • 호환성 괜찮음 (Python 2.7.3 및 3.2. 이상에서)
  • lxml 처럼 빠르지 않음
  • html5lib 처럼 호환은 안됨

HTML parser

(lxml)

BeautifulSoup(markup, "lxml")
  • 속도 매우 빠름
  • 호환성 좋음
  • C 의존성

XML parser

(lxml)

BeautifulSoup(markup, "lxml-xml") BeautifulSoup(markup, "xml")
  • 속도 매우 빠름
  • 유일한 XML parser
  • C 의존성

html5lib

(html5lib)

BeautifulSoup(markup, "html5lib")
  • 호환성 매우 좋음
  • 웹브라우저와 같은 방식으로 소스코드를 읽어들임
  • HTML5 코드 생성
  • 속도 매우 느림
  • html5lib 라이브러리를 설치해야 사용 가능


정리하면,

  • 왠만하면 lxml 을 사용하고,
  • 정 안되면 html5lib 를 설치한 후 이걸 이용하는게 좋을 듯 합니다.



'Python' 카테고리의 다른 글

Flask 8 : 블로그 블루프린트  (0) 2019.10.03
Flask 7 : 정적 파일  (0) 2019.09.08
Flask 6 : 템플릿  (0) 2019.09.06
Flask 5 : 블루프린트와 뷰  (0) 2019.08.28
Flask 4 : DB 구축  (1) 2019.08.28