반응형
오늘은 웹 데이터 분석을 위해 BeautifulSoup에 대해서 간단하게 알아보도록 하겠습니다.
BeautifulSoup는 HTML 및 XML 데이터 분석을 위한 Python 라이브러리입니다. 지난번에 알아본 urllib 라이브러리와 함께 예제로 활용했던 DART를 활용해보겠습니다.
1. BeautifulSoup 설치
BeautifulSoup는 python.org의 Document의 라이브러리에서 확인할 수 없고 PyPI(Python Package Index)에서 확인할 수 있습니다. 관련 URL> pypi.org/project/beautifulsoup4/
anaconda를 사용할 경우 자동으로 설치되어 있지만 Python만을 설치한 경우 별도의 설치가 필요합니다.
#ln1: easy_install을 이용한 설치
easy_install beautifulsoup
#ln2: pip를 이용한 설치
pip install beautifulsoup4
#ln3: 설치 후 python 프롬프트에서 import 시 에러가 발생하지 않으면 정상적으로 설치된 것입니다.
from bs4 import BeautifulSoup
2. BeautifulSoup테스트
DART를 사용하기 위해서는 URL 오픈을 위해 urllib 라이브러리도 사용이 필요하기 때문에 먼저 BeautifulSoup만을 가지고 사용하는 법을 살펴보겠습니다.
#ln1: BeautifulSoup 모듈을 import 합니다.
from bs4 import BeautifulSoup
#ln2: 테스트용 html형식 데이터를 생성합니다.
html = """
<html><body>
<p id="head">안녕하세요</p> # ln4 실습
<a id="body" href="www.naver.html">BeautifulSoup 테스트</a> # ln5 및 ln7 실습
<a id="body" href="www.daum.net">BeautifulSoup find_all 테스트</a> # ln6 및 ln7 실습
<div id="BsTest"> # ln11 실습
<ul class="top">Bs CSS 테스트
<li>Bs css1</li>
<li>Bs css2</li>
</ul>
</div>
</body></html>
"""
#ln3: BeautifulSoup 객체를 생성합니다.
soup = BeautifulSoup(html,'html.parser')
#ln4:
p1 = soup.html.body.p # html구조 html > body > p태크 추출합니다.
print(p1.string) # string메서드를 통해 태그를 제외한 문자열 추출 후 출력합니다.
#ln5:
ph = soup.find(id="head").string # 태그의 id를 활용하여 추출합니다.
ab = soup.find(id="body").string # 태그의 id를 활용하여 추출합니다.
print(ph)
print(ab)
#ln6: 여러 개의 <a>태그를 추출합니다.
aA = soup.find_all("a")
for i in aA:
href = i.attrs['href']
text = i.string
print(text, ">", href)
#ln7: # css div id #BsTest > class .top > ul을 추출합니다.
cssT = soup.select("div#BsTest > ul.top > li")
for li in cssT:
print("li=", li.string)
3. urlilib를 사용하여 오픈한 웹 문서로 BeautifulSoup 테스트
이제 실제 웹페이지 "DART의 삼성전자 공시 RSS"를 가지고 BeautifulSoup로 데이터를 다뤄보겠습니다.
#ln1: 웹 문서를 호출하기 위해 urllib.request 모듈을 import 합니다.
import urllib.request as req
from bs4 import BeautifulSoup
#ln2: 분석 DART URL 오픈
url = "http://dart.fss.or.kr/api/companyRSS.xml?crpCd=00126380"
url_open = req.urlopen(url)
#ln3: BeautifulSoup 객체 생성
soup = BeautifulSoup(url_open, "html.parser")
#ln4: channel > title를 추출합니다.
title = soup.channel.title
print(title.string)
#ln5: 분석내용 출력
item = soup.find_all("item")
for i in item:
print(i.title.string, ">", i.guid.string)
urllib 라이브러리와 관련된 사항을 확인 하고 싶으시다면 아래의 링크를 참고해주시기 바랍니다.
이상 웹 데이터 분석을 위한 BeautifulSoup 라이브러리를 간략하게 알아봤습니다.
반응형
'ITStudy > Python' 카테고리의 다른 글
[Python] openpyxl로 excel 다루기02 (urllib, BeautifulSoup) (0) | 2021.02.19 |
---|---|
[Python] openpyxl로 excel 다루기01 (excel 구조, sheet 및 cell) (0) | 2021.02.18 |
[Python] urllib로 웹 데이터 핸들링 with DART (0) | 2021.01.31 |
import와 from의 차이[Python] (0) | 2021.01.29 |
주피터 노트북(Jupyter Notebook) root 디렉토리 설정[Python] (0) | 2021.01.27 |