오늘은 웹 크롤링에 관련된 Selenium과 BS4에 대해서 간단하게 알아보겠다.
Selenium은 웹 브라우저를 자동으로 제어할 수 있게 해주는 패키지이다.
제어하고자 하는 웹 브라우저의 Driver를 설치해야 하며, 보통은 Chrome을 사용한다.
그에 따른 설치법은 따로 있기에 따로 설치해 주길 바란다.
처음 설명을 듣고 이해가 안 갔었다. 그래서 찾아보고 사용해 보니 간단하게 정의할 수 있었다.
Selenium은 특정 웹 브라우저를 통해서 원하는 웹 사이트 내에서 원하는 정보를 불러온다 또는 가져온다 라는 게 정의로 알맞다고 생각한다.
Selenium만 사용하기에는 부족하다. 원하는 데이터를 추출하려면 파일 종류를 잘 분류해야 하는데 이럴 때 사용하는 게
BeautifulSoup이다.
BeautifulSoup은 Html, xml문서를 Parsing 하기 위한 패키지로 Html에서 데이터를 추출하는데 유용하다.
정리하자면
- Selenium: 웹 브라우저를 이용하여 웹 사이트에서 자동적으로 제어할 수 있게 함.
- BeautifulSoup : Html,xml문서를 Parsing하기 위한 패키지로 Html에서 데이터를 추출하는데 유용하다.
간단하게 예시를 통해 웹 크롤링을 해보자
< 네이버 영화에서 영화 평점 불러오기>
1. 먼저 각 패키지를 Import 한다.
from bs4 import BeautifulSoup
from urllib.request import urlopen
2.url주소를 입력하고 원하는 데이터를 찾는다.
url = " http://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=cur&date=20230101 "
page= urlopen(url)
soup= BeautifulSoup(page, "html.parser")
soup
3. 검색 기능을 통해 빠르게 값이 출력되는 div부분을 찾는다.
값을 찾게 되면
soup.find_all('div','tit5')
라는 명령어를 통해 한번 더 정제를 한다.
4. 값이 정제된 걸 확인한 후에는
title_n = soup.find_all('div','tit5')
# 전체 영화의 제목 뽑아옴
movie_name = [soup.find_all('div','tit5')[n].a.string for n in range(0,len(title_n))]
#전체 영화의 평점 뽑아옴
movie_point = [soup.find_all('td','point')[n].string for n in range(0,len(title_n))]
movie_dict = {}
for i in range(0,len(title_n)):
movie_dict[movie_name[i]]= movie_point[i]
movie_dict
5. 값을 보기 쉽게 정리를 해준다. name, point로 분류해서 각각 출력되도록 해준다.
6. 원하는 대로 출력되는 걸 확인할 수 있다.
반응형
'프로그래밍 상식' 카테고리의 다른 글
[Jeus] Jeus에 대하여 (0) | 2023.04.04 |
---|---|
[자바 상식] Spring MVC에 대하여 (0) | 2023.03.23 |
[자바 상식] VO,BO,DAO,DTO에 대해 (0) | 2023.03.22 |
@RequestBody, @RequestParam,@ModelAttribute의 차이 (0) | 2023.03.21 |
컴파일 VS 인터프리터에 대해 알아보자 (0) | 2023.03.20 |