본문 바로가기

프로그래밍/python

파이썬 웹 파싱 라이브러리 Beautiful Soup

Beautiful Soup은 파이썬의 HTML 파싱 라이브러리입니다.

이것만 있으면 웹 파싱은 순식간입니다. 파이썬의 편의성과 Beautiful soup의 유연함이 만나 최강곰비를 이루게 됩니다. 백문이 불여일견이라고 하죠. 먼저 예제를 보여드리도록 하겠습니다. 네이버 웹툰의 웹툰 목록을 긁어오도록하겠습니다.

#-*- coding: cp949 -*-
import urllib
from bs4 import BeautifulSoup
html = urllib.urlopen('http://comic.naver.com/webtoon/weekday.nhn')
soup = BeautifulSoup(html, "lxml")
titles = soup.find_all("a", "title")

for title in titles:
    print 'title:{0:10s} link:{1:20s}\n'.format(title['title'].encode('utf-8'), title['href'].encode('utf-8'))

urllib을 이용해서 naver 웹툰의 html 파일을 갖어와서 lxml 파서를 이용해서 BeautifulSoup 객체로 변환시킨뒤 원하는 요소를 갖어오는 코드입니다. 파서는 파이썬에 기본적으로 들어있는 html.parser을 쓸 수 있고, lxml 파서를 사용할 수 도 있습니다. lxml 파서가 기본 파서보다는 더 좋은듯 합니다.


http://www.crummy.com/software/BeautifulSoup

공식 홈페이지는 이곳이고, 이곳에서 BeautifulSoup을 다운 받을 수 있습니다. lxml 파서를 이용하고 싶다면 http://lxml.de/ 에가서 받으시면 됩니다. 참고로 lxml을 설치 할 때는 Cython이 필요합니다. 

BeautifulSoup은 굉장히 편하고 강력하기도 하면서, 문서화도 잘 되 있어서 사용하기에 전혀 어려움이 없습니다. 위의 코드를 보시가 시피 굉장히 짧은 코드로만도 굉장히 많은 일을 할 수 있습니다. 

 

또한 파이썬을 이용하는 것이다 보니 Django나 Google App Engine에서도 사용할 수 있어서 활용도에 있어서도 굉장하다고 생각합니다. 

BeautifulSoup을 알기 전까지는 HTML 파싱이 굉장히 귀찮고 힘들고 짜증나고 멘탈이 붕괴되는 일이었는데, BeautifulSoup을 알고 나서 부터는 웹 파싱이 이렇게 쉬울수가 없네요. 또 한번 신세계를 경험하는것 같았습니다.


저는 코드가 굉장히 깔끔하게 써지는 파이썬을 굉장히 선호하는데, BeautifulSoup은 저의 파이썬 사랑에 또 한번 힘을 실어 줄 것 같습니다. 참고로 저의 바람은 파이썬이 많은 분야에서 활용되서 인간세상을 널리 이롭게하는 것입니다!