반응형

#web scriping

#web crawling

 

Beautifulsoup이 뭐야?

사이트에 요청을 한 결과로 반환되는 HTML문서를 처리하는데 사용할 수 있는 라이브러리입니다. Beautifulsoup은 HTML문서를 분해하고 비슷한 분류의 데이터 별로 나누어줍니다(parsing).

 

※HTML문서는 <html></html>와 같은 태그로 구성되어 있고 웹페이지의 구조를 정하는 역할을 하는 문서입니다. 

 

Beautifulsoup을 사용하려면 무엇이 필요해?

기본적으로 Python이 설치되어 있어야 합니다. 또한 Python에 beautifulsoup 라이브러리가 설치되어 있어야 합니다. 설치되어 있지 않은 경우 cmd나 터미널 등에서 아래의 명령를 실행해 설치할 수 있습니다. 

 

pip install bs4

이하에서는 간단하게 Beautifulsoup을 사용하는 예를 살펴보겠습니다. 

 

BeautifulSoup 임포트 하기
from bs4 import BeautifulSoup

 

파일 읽어들이기

여기서는 open(), read(), close()등의 메소드를 사용하겠습니다. 이 메서드들은 BeautifulSoup의 메서드가 아니라 파이썬에 기본적으로 내장되어 있는 메서드입니다. 

 

def read_file():
    file = open('soup_html.html')
    data = file.read()
    file.close()
    return data
    
    
    
html_file = read_file() #메서드 실행

여기서는 실행되는 python 파일과 동일한 위치에 있는 'soup_html.html'이라는 파일을 열고

그 파일을 read메서드를 사용해서 문자열로 읽어들이고 있습니다.  

close 메서드를 사용해 파일을 닫아주고 문자열로 만든 data를 반환하고 있습니다. 

 

Beautifulsoup으로 html문자열 분류하고 나누기(Parsing)

아래에서는 빠르게 파싱(Parsing)을 진행할 수 있도록 lxml을 사용하고 있습니다. 

다만 이경우 lxml이 설치되어 있을 필요가 있습니다. 

 

soup = BeautifulSoup(html_file,'lxml')

 

html.parser를 이용하면 별도의 설치없이 파싱을 진행할 수 있습니다. 

 

soup = BeautifulSoup(html_file,'html.parser')

 

이렇게 파싱한 데이터를 출력하면 예를 들어서 아래와 같은 모습입니다. 

<html lang="ko">
<head>
<meta charset="utf-8"/>
<title>soup</title>
</head>
<body>
<div>
<p>In first div</p>
</div>
<div>
<p>In second div</p>
</div>
</body>
</html>

 

html문서 좀 더 깔끔하게 보기

prettify() 메서드를 활용하면 조금 더 정리된 모습의 html 문서를 확인할 수 있습니다. 

print(soup.prettify())

 

출력 내용이 아래와 같이 들여쓰기를 적용한 모습으로 바뀝니다. 

<!DOCTYPE html>
<html lang="ko">
 <head>
  <meta charset="utf-8"/>
  <title>
   Intro_to_soup
  </title>
 </head>
 <body>
  <div>
   <p>
    In first div
   </p>
  </div>
  <div>
   <p>
    In second div
   </p>
  </div>
 </body>
</html>

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기