[ 작업 환경 ]
Python3.8
1. 필요 패키지 설치 및 import, 선언 방법
pip install beautifulsoup4
pip install lxml
from bs4 import BeautifulSoup
beautifulsoup4만을 설치할 경우 아래와 같이 선언하여 사용할 수 있고 추가설치가 필요없는 대신 속도가 빠르진 않고 적당한 수준입니다.
bsObject = BeautifulSoup(html, "html.parser")
lxml을 설치하여 아래와 같이 선언하여 사용시 속도가 매우 빠르므로 아래와 같이 사용하는 것을 권장합니다.
bsObject = BeautifulSoup(html, "lxml")
2. 웹크롤링 샘플 : find 활용
from urllib.request import urlopen
from bs4 import BeautifulSoup
code = '032500'
html = urlopen("https://finance.naver.com/item/main.nhn?code=" + code)
bsObject = BeautifulSoup(html, "lxml", from_encoding='utf-8')
no_today = bsObject.find('p', {"class":"no_today"})
blind = no_today.find('span', {"class":"blind"})
live_cost = blind.text
print(live_cost)
참고 자료 : html 소스 일부
<p class="no_today">
<em class="no_up">
<span class="blind">57,300</span>
<span class="no5">5</span><span class="no7">7</span><span class="shim">,</span><span class="no6">6</span><span class="no0">0</span><span class="no0">0</span>
</em>
</p>
3. 웹크롤링 샘플 : findAll 활용
from urllib.request import urlopen
from bs4 import BeautifulSoup
code = '032500'
html = urlopen("https://finance.naver.com/item/main.nhn?code=" + code)
bsObject = BeautifulSoup(html, "lxml", from_encoding='utf-8')
# 기업개요 - 일일 정보
print('기업 개요')
summary_info = bsObject.find('div', {"class":"summary_info"})
summary_info_list = summary_info.findAll('p')
for summary_info_line in summary_info_list:
print(summary_info_line.text)
참고 자료 : html 소스 일부
<div id="summary_info" class="summary_info">
<h4>기업개요</h4>
<p>1991년 1월에 설립되어 1994년 법인전환 후 2000년 3월에 코스닥시장에 상장한 무선통신장비 전문 제조 기업임.</p>
<p>동사 및 종속회사는 무선통신 기지국에 장착되는 각종 장비 및 부품류 등을 생산, 판매하는 RF사업과 스포츠조명, 실외조명, 실내조명등을 생산, 판매하는 LED사업을 영위하고 있음.</p>
<p>당기말 현재 11개의 연결대상 종속회사를 보유중이며 RF사업은 5G 투자에 따른 수주 선점, LED사업은 경영 정상화를 목표함.</p>
<div class="txt_notice">출처 : 에프앤가이드</div>
<div class="btn_area_top">
<a href="#" onclick="hidePannel('summary_lyr'); return false;"><img src="https://ssl.pstatic.net/static/nfinance/img/btn_close.gif" alt="닫기" width="11" height="11"></a>
</div>
<div class="bg_btm"></div>
</div>