Reference: BeautifulSoup 공식 문서
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(부모 > 자식)
<body>
를 입력으로 내부 정보를 가져오기print(soup.select('body'))
<p>
태그를 입력으로 넣어보기print(soup.select('p'))
✨ Hint
BeautifulSoup에서는 class의 이름으로 바로 요소를 가리킬 수 있습니다.
print(soup.select('h1 .name .menu'))
print(soup.select('html > h1'))
아무런 정보도 출력되지 않는다. ❓❗
print(soup.select('html h1'))
이렇게 해주어야 함.