본문 바로가기
Python/머신러닝, 딥러닝

[파이썬] 웹 크롤링 - BeautifulSoup 라이브러리

by IT두잇 2022. 4. 20.

파이썬으로 웹 크롤링을 진행할 수 있습니다 :)

웹 크롤링을 위해서는 먼저 아래 준비단계가 필요합니다.

 

1. BeautifulSoup 라이브러리 import

BeautifulSoup 라이브러리란?

HTML 혹은 XML 파일에서 원하는 데이터를 손쉽게 parsing (분석)할 수 있게 만드는 라이브러리

from bs4 import BeautifulSoup
cs

 

2. 데이터 이름 설정

# 예시 1) 직접 내용 타이핑
html = '''
<html>
<head><body>
   <h1>스크레이핑이란?</h1>
   <p>웹 페이지를 분석하는 것</p>
   <p>원하는 부분을 추출하는 것</p>
</body></html>
'''
 
# 예시 2) 크롤링할 링크 삽입
html = 'https://www.naver.com'
cs

 

3. Parsing

처음에 import한 BeautifulSoup 라이브러리를 사용해 데이터를 parsing 해줍니다.

# 방법 1)
soup = BeautifulSoup(html, 'html.parser')
 
# 방법 2)
soup1 = BeautifulSoup(html, 'lxml')
cs

 


출력 방법

데이터.태그.태그를 출력하고 싶은 부분까지 작성하면 내용이 출력됩니다.

soup.html.body #1) html안에 있는 내용 출력
soup.html.body.h1 # 2) h1안에 있는 내용 출력
cs

결과값: 

1) 

<body>
<h1>스크레이핑이란?</h1>
<p>웹 페이지를 분석하는 것</p>
<p>원하는 부분을 추출하는 것</p>
</body>

 

2)

<h1>스크레이핑이란?</h1>

 


 

  • text / string: 태그 제외하고 글자만 출력
soup.html.body.h1.text # 1)
soup.html.body.h1.string # 1)
 
soup.html.body.p.text # 2)
cs

결과값:

1)

'스크레이핑이란?'

 

2)

'웹 페이지를 분석하는 것'

 


  • next_sibling: 다음 줄 출력
soup.html.body.p.next_sibling # 1) 두번째 paragraph 출력 --> '/n'
soup.html.body.p.next_sibling.next_sibling # 2) 세번째 paragraph 출력
soup.html.body.p.next_sibling.next_sibling.text # 3) 세번째 paragraph 글자만 출력
cs

결과값:

1)

'\n'

 

2)

<p>원하는 부분을 추출하는 것</p>

 

3)

'원하는 부분을 추출하는 것'

 


  •  요소의 글자 출력하기
h1 = soup.html.body.h1
p1 = soup.html.body.p
p2 = p1.next_sibling.next_sibling
 
print('h1 = ' + h1.string)
print('p1 = ' + p1.string)
print('p2 = ' + p2.string)
cs

결과값:

h1 = 스크레이핑이란?
p1 = 웹 페이지를 분석하는 것
p2 = 원하는 부분을 추출하는 것