<참조: 파이썬을 이용한 머신러닝, 딥러링 실전개발 입문>
파이썬, BeautifulSoup 웹 페이지 자료 추출
글. 오상문 sualchi@daum.net
파이썬에서 스크래핑한 웹 페이지를 분석할 때 BeautifulSoup를 사용할 수 있다. BeautifulSoup는 HTML, XML 문서를 분석할 수 있는데, 웹에서 페이지를 가져오는 기능은 제공하지 않음에 주의하자. 아나콘다를 설치하면 함께 설치되지만, BeautifulSoup가 없는 환경이라면 별도로 설치해야 한다.
pip install beautifulsoup4
pip3 install beautifulsoup4
다음은 간단한 HTML 데이터 분석 예제 소스 코드이다.
# BeautifulSoup 임포트 (버전4)
from bs4 import BeautifulSoup
# 분석할 HTML 데이터 예제
html = """
<html>
<body>
<h1>스크래핑 예제입니다.</h1>
<p>안녕하세요?</p>
<p>반갑습니다.</p>
<p>BeautifulSoup 만세~~~</p>
</body>
</html>
"""
# HTML 파서를 이용한 분석 결과를 객체 soup 저장
soup = BeautifulSoup(html, "html.parser")
# soup 객체에서 원하는 텍스트 자료를 가져온다.
h1 = soup.html.body.h1 # h1 태그 텍스트
p1 = soup.html.p # 첫째 p 태그 텍스트
p2 = p1.next_sibling.next_sibling # 둘째 p 태그 텍스트
p3 = p2.next_sibling.next_sibling # 셋째 p 태그 텍스트
# 가져온 텍스트 출력
print(h1.string)
print(p1.string)
print(p2.string)
print(p3.string)
[결과]
스크래핑 예제입니다.
안녕하세요?
반갑습니다.
BeautifulSoup 만세~~~
--------------------------------------------
[참고] 웹페이지에서 id를 이용하여 가져오기 (find() 기능)
body = soup.find(id="body")
# body 태그 부분의 텍스트 가져온다.
[참고] 같은 태그 자료를 한번에 가져오기 (find_all() 기능)
from bs4 import BeautifulSoup
html = """
<html><body>
<li><a href="https://abc.com/">ABC</a></li>
<li><a href="https://www.naver.com/">NAVER</a></li>
<li><a href="https://www.google.com/">Google</a></li>
</body></tml>
"""
# HTML 파서를 이용한 분석 결과를 객체 soup 저장
soup = BeautifulSoup(html, "html.parser")
# a 태그가 걸린 텍스트를 모두 가져온다.
data_links = soup.find_all('a')
# 자료중에서 링크 텍스트 부분만 뽑아서 출력
for link in data_links:
href = link.attrs['href']
print(href, link.string)
[결과]
https://abc.com/ ABC
https://www.naver.com/ NAVER
https://www.google.com/ Google
[참고] BeautifulSoup는 DOM 요소 속성이나 CSS 선택자를 이용한 추출도 지원한다.
<이상>
'웹 크롤링, 스크래핑' 카테고리의 다른 글
BeautifulSoup, HTML 구조에서 특정 태그의 요소 다루기 (0) | 2022.06.18 |
---|---|
웹 스크래핑: 캘린더 다루기 (with Selenium) 영문 (0) | 2022.06.17 |
BeautifulSoup, selenium 크롤링, 스크래핑 (0) | 2022.06.17 |
chromedriver.exe 다운로드(download) 사이트 (0) | 2021.05.18 |
파이썬, 네이버 오늘의 코스피 코스닥 지수 가져와 출력하기 (0) | 2020.01.06 |