반응형
BeautifulSoup란 무엇인가,
HTML, XML, JSON 등 파일의 구문을 분석하는 모듈.
웹 페이지를 표현하는 HTML을 분석하기 위해 사용되며, 원하는 데이터를 가져오기 쉽게 비슷한 분류의 데이터별로 나누어 주는 파이썬 라이브러리이다.
( 보통 html정보를 가져오는 urllib.request.urlopen() 모듈과 함께 사용되곤 합니다 )
BeautifulSoup 설치
pip install bs4
[1] BeautifulSoup 시작하기
from bs4 import BeautifulSoup
from urllib.request import urlopen
# 크롤링할 페이지를 page 변수에 저장
page = "https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=cur&date=20220504"
# urlopen()을 통해 페이지를 열어준다.
html = urlopen(page)
soup = BeautifulSoup(html, "html.parser")
soup
(저는 네이버 영화 평점 사이트를 크롤링해 보았습니다.)
파이썬은 객체지향 언어로써, HTML 파일로 BeautifulSoup 객체를 만들 수 있습니다.
변수 이름은 관습적으로 soup로 작성합니다.
"html.parser"의 의미는, BeautifulSoup 객체에게 "HTML을 분석한다"라고 알려주는 것을 의미합니다.
[2] 원하는 HTML 태그 추출하기
soup.find("p")
soup.find_all("p")
# 추가로, class_ 를 통해 html class 속성을 추가하여 추출 가능하다.
soup.find_all('div', class_='tit5')
# id 속성을 통해서도 추출 가능
soup.find_all('div', id='ipad-air')
- find() : HTML 태그 한 개를 추출
- find_all() : HTML 태그를 여러 개 담고 있는 리스트를 추출
< 응용 하기 >
ex) div 태그 중 class가 'tit5' 인 것을 추출하였습니다.
- 위에 찾은 HTML 에서 첫 번째 요소를 구하려고 한다.
- div 태그 안에 있는 다른 태그 (a)를 추출하고자 한다.
soup.find_all('div', class_='tit5')[0].a
# or
soup.find_all('div', class_'tit5')[0].find('a')
파이썬과 똑같이 인덱스를 통해 원하는 위치에 요소를 불러올 수 있다.
(find_all은 해당하는 태그를 모두 리스트에 저장한다.)
[3] 원하는 텍스트 추출하기
soup.find_all('div', 'tit5')[0].a.string
# or
soup.find_all('div', 'tit5')[0].a.get_text()
주의할 점
- get_text() 메서드는 현재 태그를 포함하여 모든 하위 태그를 제거하고 유니코드 텍스트만 들어있는 문자열을 반환합니다. 항상 마지막 태그에 사용해야 원하는 텍스트를 추출할 수 있다.
- string는 태그 내 자식 태그가 둘 이상이면, 무엇을 반환해야 하는지 명확하지 않아 None 값을 반환한다.
반응형
'Python > Python' 카테고리의 다른 글
[Python] 파이썬 lambda 람다 함수 사용법 및 설명 (0) | 2023.08.31 |
---|---|
[python] 파이썬 pickle 파일로 저장 및 불러오기 / dump, load (0) | 2022.07.13 |
[Python] 파이썬 sum 함수로 리스트 합치기 (숫자형, 리스트) (0) | 2022.05.30 |
[python] 파이썬 리스트 요소 제거하기 (del, pop, remove) (0) | 2022.05.27 |
[python] 컴프리헨션(comprehension)이란, (0) | 2022.05.04 |