말랑말랑제리스타일

파이썬 BeautifulSoup으로 가져올 수 없는 데이터 본문

프로그래밍/파이썬

파이썬 BeautifulSoup으로 가져올 수 없는 데이터

제리제리 2023. 6. 19. 15:43

파이썬 BeautifulSoup으로 크롤링에 입문하는 분들이 굉장히 많죠. 하지만 파이썬 BeutifulSoup으로 크롤링을 하기에는 궁극적인 한계가 있습니다; 바로 Javascript로 생성된 부분을 크롤링할 수 없다는 거죠.

파이썬 BeautifulSoup으로 가져올 수 있는 데이터와 없는 데이터

앞서 말한 것처럼 파이썬 BeautifulSoup으로는 JavaScript로 생성된 파트는 크롤링이 불가능합니다.

예를 들면 어떤 내용이 있을까요?

다음 영화의 평점을 예로 한번 들어보겠습니다.

https://movie.daum.net/moviedb/grade?movieId=136532 

 

스파이더맨: 어크로스 더 유니버스

Daum영화에서 자세한 내용을 확인하세요!

movie.daum.net

이 링크를 파이썬에서 열어서 BeautifulSoup으로 전체 데이터를 크롤링해 보면 화면에서는 평점 리스트가 나오지만 크롤링한 데이터에는 평점 리스트가 보이지 않죠.

이게 바로 JavaScript로 만들어졌기 때문에 파이썬 BeutifulSoup으로는 크롤링이 불가능한 데이터 영역인 거죠.

자 그러면 JavaScript로 만들어진 부분을 알기 위해서는 꼭 BeautifulSoup으로 데이터 열어서 있는지 없는지 확인을 해야 하는가, 그건 또 아닙니다.

페이지에서 Java Script로 작성된 부분 확인하는 방법

편의상 제가 사용하는 브라우저가 크롬이다 보니 크롬 기준으로 페이지에서 Java Script로 작성된 부분을 확인하는 방법을 알려드리겠습니다.

크롬 설정 들어가는 방법
크롬 설정 들어가는 방법

먼저 크롬 우측 상단의 점 세 개를 눌러 설정으로 들어가 줍니다.

그리고 좌측의 개인정보 및 보안으로 가서 사이트 설정에 들어가 줍니다.

쭉 내려가면 javascript 설정이라는 부분이 있죠. 여기로 들어가 주세요.

크롬 자바스크립트 설정
크롬 자바스크립트 설정

여기서 아래쪽 버튼을 선택해서 자바스크립트를 허용하지 않도록 바꿔줍니다.

그리고 다시 사이트를 새로고침 해보세요.

자바스크립트 파트가 사라진 화면
자바스크립트 파트가 사라진 화면

자바 스크립트로 작성된 부분이 전부 사라졌습니다.

앞서 말한 것처럼 평점은 자바스크립트로 작성된 파트이기 때문에 화면에서 보이지 않죠.

참고로 당연히 다시 자바스크립트 사용을 허용해 주면 다시 보입니다.

 

자 이렇게 자바스크립트로 작성된 부분인지 아닌지를 웹 브라우저를 통해서 확인할 수 있고 beautiful Soup을 이용해 크롤링이 가능한 파트인지 아닌지를 구분해줄 수 있습니다.

 

파이썬 자바스크립트로 작성된 파트 크롤링하는 방법

물론 파이썬에서 자바스크립트로 작성된 페이지는 크롤링할 수 없는 것은 아닙니다.

대신 Beautiful Soup을 이용해서는 불가능할 뿐이죠.

Selenium 등 직접 브라우저를 이용해 페이지에 접근하는 라이브러리를 사용해서 크롤링하는 방법이 있는데요.

Beautiful Soup과 사용법이 크게 다르지는 않지만 직접 페이지를 열어서 크롤링하는 방법이다 보니 인간인지 봇인지 확인하는 팝업에서 걸리는 등 이 역시 만사형통의 방법은 아닙니다.

대신 자바스크립트로 작성된 페이지를 크롤링하는 데에는 Beutiful Soup보다는 훨씬 유용하죠.

Comments