본문 바로가기

Python/웹크롤링 기초

Beautifulsoup이란

Beautifulsoup
웹 크롤링 할 때 , 해당 페이지의 HTML에서 원하는 데이터를 가져와서 파싱하는 라이브러리이다.

 

이해하기 쉽게 간단한 예제를 진행해본다.

1. 설치
pip install beautifulsoup4

 

2. 사용법
soup = BeautifulSoup( html코드, html번역 )

 


requests 라이브러리와 함께 예제를 통해 쉽게 이해할 수 있다.

import requests
from bs4 import BeautifulSoup

response = requests.get("https://www.naver.com")
html = response.text
soup = BeautifulSoup(html, 'html.parser') #html 번역역할
word = soup.select_one("#NM_set_home_btn") #번역한 html에서 원하는 요소를 선택하여 정보 가져온다
print(word.attrs) # 속성가져오기
print(word.text) # html내부에 있는 text가져오기

 

결과는 다음과 같다.

{'id': 'NM_set_home_btn', 'href': 'https://help.naver.com/support/welcomePage/guide.help', 'class': ['link_set'], 'data-clk': 'top.mkhome'}
네이버를 시작페이지로

 

 

requests.get을 통해 네이버의 리소스를 가져온다. response.text로 가져오면 네이버 화면의 html을 가져온다. 

 

가져온 html은 text로 되어있기 때문에 이 text를 html로 번역하고
태그나 id, class를 선택하여 원하는 데이터를 가져와야한다. 이것을 해주는 것이 BeautifulSoup라이브러리이다.

word = soup.select_one("#NM_set_home_btn") 
NM_set_home_btn이라는 아이디를 가진 요소를 가져온다는 의미이다.

word를 출력해보면 해당 id의 태그정보를 가져온다.

<a class="link_set" data-clk="top.mkhome" href="https://help.naver.com/support/welcomePage/guide.help" id="NM_set_home_btn">네이버를 시작페이지로</a>

 

선택한 요소의 속성이나 텍스트를 가져오기 위해 word.attrs , word.text를 이용한다.

 

 


select_one은 조건에 맞는 태그를 한개 가져온다. 만약 여러개가 있어도 한개만 가져온다.

select는 조건에 맞는 태그를 여러개 가져온다. 즉, 결과값이 리스트 형태로 저장된다. 리스트 내부의 개별적 요소를 접근하기 위해서는 반복문을 사용해야한다.

select_one과 select의 차이이고, 크롤링 하고자 하는 것에 따라 알맞게 사용하면 된다.