[Python] BeautifulSoup 간단 사용법
- Python/웹크롤링
- 2020. 4. 28.
BeautifulSoup의 간단한 메소드 소개를 할까합니다.
웹크롤링을 하게 되면 개발자모드에서 데이터를 가져옵니다. 개발자모드를 보면 알겠지만 데이터는 보통 html로 되어있습니다. 그걸 다 가져올수는 없고 제가 필요한 부분만 가져와야 합니다. 더구나 데이터가 많거나 웹사이트가 무거운 경우는 일일히 찾아서 복사해서 붙여넣을수도 없습니다. 그런 불편함을 BeautifulSoup으로 해결할 수 있습니다.
BeautifulSoup으로 html에서 필요한 부분을 가져올 수 있습니다.
html = '''
<html>
<head>
<title>책 소개 </title>
</head>
<body>
<div id='upper' class='test'>
<h1 title='Picture'>그림책</h1>
<p class ="text">Tap</p>
</div>
<h2>그림책이란?
<p class = "text"> 그림책은 그림으로 설명하는 책을 말합니다</p>
</h2>
</body>
</html>'''
html 하나를 만들고 한 번 다뤄보겠습니다.
Find 함수
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
soup.find(class_='test')
find 함수는 특정 html tag를 검색할 때 씁니다. 검색 조건에 찾고자하는 tag를 넣어주면 됩니다.
참고로 class는 파이썬에서 예약어라서 class_로 표기해야 됩니다.
위 예에서는 class 가 test 인 것을 찾아달라고 해서 아래와 같이 나왔습니다.
class 말고도 다른 것으로도 찾을 수 있습니다.
soup.find('h1')
원하는 tag를 넣으면 얼마든지 찾을 수 있습니다.
shift+tap을 누르면 각 함수에 대한 인자값을 볼 수 있습니다. 여러개의 조건을 넣어서 찾고 싶다면 attrs를 추가해주어야 합니다.
attrs를 보시면 dict로 되어 있습니다. dict로 적용해야 원하는 요청을 줄 수 있습니다.
attrs = {'id':'upper','class':'test'}
soup.find('div',attrs = attrs)
Find_all 함수
find 함수는 조건에 맞는 하나의 tag만 찾는다면, find_all은 조건에 맞는 모든 tag를 리스트로써 찾아줍니다.
soup.find_all(class_='text')
리스트로써 반환해줍니다.
Get_text 함수
tag의 value를 바로 가져올 수 있습니다.
tag = soup.find('h2')
print(tag)
tag.get_text().strip()
tag = soup.find('div', id='upper')
print(tag)
tag.get_text().strip()
attribute 값 추출
<> 안에 써있는 attribute 값도 가져올 수 있습니다.
tag = soup.find('h1')
print(tag)
tag['title']
이상으로 Beautiful Soup의 간단한 사용법이었습니다.
'Python > 웹크롤링' 카테고리의 다른 글
[웹크롤링] 네이버증권에서 재무제표 가져오기 (13) | 2021.07.19 |
---|---|
뉴스 크롤링하기 (0) | 2020.05.06 |
requests 모듈(get 방식 크롤링) (0) | 2020.04.26 |
정규표현식 (re) (1) | 2020.04.22 |
웹크롤링을 시작하기 전에 준비할 것 (0) | 2020.04.22 |