본문 바로가기

만들기/크롤러

파이썬으로 크롤링하기 - Beautiful Soup


파이썬으로 크롤링을 할 때, Beautiful Soup 모듈을 이용하면 편리하다.

 


1. Beautiful Soup 설치

pip install beautifulsoup4

 

2. 크롤링 하려는 페이지의 코드 확인

보안뉴스 메인페이지의 헤드라인 타이들을 긁어 올 생각이다.

확인해보니 li 태그 안에 제목들이 입력되어 있다.

li 바로 위에 있는 ul의 클래스는 아래쪽에도 계속 반복되므로, 상위 div의 id를 이용하려 한다.

보안뉴스 메인 소스코드

 

3. 헤드라인 가져오는 코드

from bs4 import BeautifulSoup
import requests

#보안뉴스 소스코드 가져오기
req = requests.get('https://www.boannews.com/Default.asp')
soup = BeautifulSoup(req.text, 'html.parser')

#headline0을 id로 가진 div 아래 있는 li 크롤링
title = soup.find('div', id='headline0').find_all('li')

#title에서 text 부분만 뽑아서 print
for i in title:
	print(i.text)

 

위의 코드에서 find는 select를 쓰면 좀 더 깔끔해진다.

# id가 headline0인 태그의 자손 중 li 크롤링
title = soup.select('#headline0 li')

 

select는 CSS의 selector를 사용할 수 있어 더 효율적인 사용이 가능하다.

#bs의 select 사용법

soup.select('태그')
soup.select('.클래스명') 혹은 ('태그.클래스명')
soup.select('#아이디명') 혹은 ('태그#아이디명')
soup.select('태그 > 자식태그')
soup.select('태그 자손태그')

find와 select의 자세한 차이점은 아래 링크에서 확인 가능하다

https://stackoverflow.com/questions/38028384/beautifulsoup-is-there-a-difference-between-find-and-select-python-3-x

 

3. 실행모습

 

 

BS에 대해 더 자세한 사용법은 아래 사이트에서 확인 가능하다.

https://www.crummy.com/software/BeautifulSoup/