본문 바로가기

Data Analysis/개인 프로젝트

[호텔 리뷰 분석 - 웹 스크래핑] 4. Process(3)

 

 

지난 포스팅에는 호텔 리뷰 분석 process 2번을 진행했었다.

[Data Analysis/개인 프로젝트] - [호텔 리뷰 분석 - 웹 스크래핑] 3. Process(2)

 

[호텔 리뷰 분석 - 웹 스크래핑] 3. Process(2)

지난 포스팅에는 호텔 리뷰 분석 process 1번을 진행했었다. [Data Analysis/개인 프로젝트] - [호텔 리뷰 분석] 2. Process(1) [호텔 리뷰 분석] 2. Process(1) 지난 포스팅에서는 호텔 리뷰 분석에 어떤 데이터

k-wien1589.tistory.com

 

 

 

이번 포스팅에선 마지막 process를 진행하려 한다.

 

Process 3. 

수집한 리뷰 고유 번호를 이용해서 목표 데이터 수집

 

- 리뷰의 (고유번호 / 작성자 id / 제목 / 게시 날짜 / 내용)

- (가격 / 장소 / 객실 / 청결도 / 서비스 / 침대 퀄리티 / 종합) 평점

- 숙박 날짜

- 여행 유형

 

 

위의 정보들 중 리뷰 고유번호는 이미 구했고, 나머지 정보은 리뷰 상세 페이지에서 확인할 수 있다.

 

 

여러개의 리뷰 페이지를 들어가보면 알겠지만, 역시나 패턴이 보인다.

그것은 바로, url에서 리뷰 번호만 달라진다는 것.

위의 url 중 리뷰 페이지에 따라 달라지는 부분은 r뒤의 숫자, 즉 리뷰 고유번호 뿐이다.

 

 

이를 이용하기 위해 해당 url을 변수에 담아둔다. 굳이 함수를 작성할 필요는 없을 것 같다.

 

 

이제 상세 페이지에 접근한 후 정보를 추출해보자.

 

필요한 정보들은 아래와 같이 접근하면 추출해낼 수 있다.

웹 사이트의 html 문서를 열어서 확인하거나 불러온 html 문서를 보면 확인할 수 있다.

 

리뷰 상세데이터 ⇒ 요소 “div”, 클래스 선택자 “featured-review-container”
0. 리뷰 고유번호
1. 리뷰 작성자 id  ⇒ 요소 “div”, 클래스 선택자 “info_text”
2. 리뷰 제목 ⇒ 요소 “h1”, 아이디 선택자 “HEADING”
3. 종합 평점 ⇒ 요소 “span”, 클래스 선택자 “ui_bubble_rating”
4. 리뷰 게시 날짜 ⇒ 요소 “span”, 클래스 선택자 “ratingDate”
5. 리뷰 내용 ⇒ 요소 “span”, 클래스 선택자 “fullText”
6. 숙박 날짜 ⇒ 요소 “div”, 클래스 선택자 “prw_rup prw_reviews_stay_date_hsx”
7. 여행 유형 ⇒ 요소 “div”, 클래스 선택자 “recommend-titleInline”


상세 평점 ⇒ 요소 “li”, 클래스 선택자 “recommend-answer”⇒ 요소 “div”, 클래스 선택자 “ui_bubble_rating”
8. 가격 평점
9. 장소 평점
10. 침대의 퀄리티 평점
11. 객실 평점
12. 청결도 평점
13. 서비스 평점

 

 

우선 리뷰 상세 데이터부터.

 

 

조금 더 수정이 필요해 보인다.

 

 

 

 

리뷰 점수는 어떻게 해야 할까??

 

사이트를 직접 확인해보면 알겠지만, bubble_50에서 50이 평점을 나타내는 점수다. 5당 별점 반 개, 50이면 별점 5점.

평점(review_score)에 class가 2개 있는 것이 보인다. ui_bubble_rating과 bubble_50.

 

다른 리뷰들도 마찬가지일 것이다.

즉 이 클래스들 중 두번째 클래스에서 숫자만 추출하면 되는 것.

 

아래와 같은 함수를 작성하자. 평점에서 숫자만 추출하는 함수다.

리뷰 평점 외에 상세 평점을 가져올 때도 사용할 수 있을 것이다.

 

 

 

상세 평점도 구해보자.

 

 

이제 추출해낼 건 다 했다.

 

정리해서 데이터프레임 형태로 만들면 분석에 용이할 것이다.