[Web Crawling] BeautifulSoup 패키지

Sun Ah Min·2022년 3월 3일
0

Web Crawling

목록 보기
1/1

Reference: BeautifulSoup 공식 문서

BeautifulSoup의 사용법

  • 실제 웹 사이트의 HTML이 아니라 임의로 만든 HTML 문자열을 가지고 HTML 문서를 분석해보자
from bs4 import BeautifulSoup

#- HTML 문서를 문자열 html로 저장합니다.
html = '''
<html> 
    <head> 
    </head> 
    <body> 
        <h1> 장바구니
            <p id='clothes' class='name' title='라운드티'> 라운드티
                <span class = 'number'> 25 </span> 
                <span class = 'price'> 29000 </span> 
                <span class = 'menu'> 의류</span> 
                <a href = 'http://www.naver.com'> 바로가기 </a> 
            </p> 
            <p id='watch' class='name' title='시계'> 시계
                <span class = 'number'> 28 </span>
                <span class = 'price'> 32000 </span> 
                <span class = 'menu'> 악세서리 </span> 
                <a href = 'http://www.facebook.com'> 바로가기 </a> 
            </p> 
        </h1> 
    </body> 
</html>
'''

#- BeautifulSoup 인스턴스를 생성합니다.
#- 두번째 매개변수는 분석할 분석기(parser)의 종류입니다.
soup = BeautifulSoup(html, 'html.parser')

BeautifulSoup(입력 문자열, 'html.parser')라는 코드는 이 입력은 HTML 문법으로 작성되어져 있으니 HTML 문법을 기반으로 파싱하라는 의미입니다. 이렇게 인스턴스를 생성하고나면 본격적으로 정보를 가져오는 것은 select()를 가지고 수행할 수 있습니다.

현재 인스턴스의 이름은 soup이므로 soup.select()를 통해서 정보를 가져옵니다. select()의 사용 방법은 간단히 요약하면 soup.select('찾는 정보')입니다. 구체적으로는 아래와 같이 사용합니다.

print(soup.select('body'))

select()의 더 자세한 사용 방법을 알고 싶다면? 여기를 클릭

🔅 Quiz. BeautifulSoup를 통해서 '자식 관계'를 표현하기 위해서는 어떤 형식을 사용하나요?

soup.select(부모 > 자식)

1. 태그명 <body>를 입력으로 내부 정보를 가져오기

print(soup.select('body'))

2. <p> 태그를 입력으로 넣어보기

print(soup.select('p'))

3. 태그명 h1 자식인 클래스 .name의 자식인 클래스 .menu의 정보찾기

✨ Hint

BeautifulSoup에서는 class의 이름으로 바로 요소를 가리킬 수 있습니다.

print(soup.select('h1 .name .menu'))

4. html 의 바로 아래 자식인 h1의 정보 가져오기

print(soup.select('html > h1'))

아무런 정보도 출력되지 않는다. ❓❗

  • print(soup.select('html h1')) 이렇게 해주어야 함.
profile
나는 커서 무려 내가 되겠지

0개의 댓글