코딩초보 김씨

[4] 네이버 호텔 크롤링 4 본문

김초보의 프로젝트/네이버호텔 추천시스템

[4] 네이버 호텔 크롤링 4

초보김씨 2021. 5. 12. 20:27

개별 호텔의 URL에 들어가기 전에 여러 호텔의 정보를 크롤링하는 크롤러를 만들었다.

 

 

 

 

 

 

이번에는 각 호텔의 URL에 들어가서 정보를 긁어오는 크롤러를 만들 것이다.

항목 별 평점과 리뷰를 모으는 용도이다.

 

 

 

 


 

1. 전에 모았던 URL을 이용하여 글 띄우기

# excel 파일 가져오기
url_load = pd.read_excel("210512_hotel_list.xlsx")

# url 가져오기
# 지금은 개별 코드이므로 0 입력. 코드 합칠 땐 반복을 위해 0 대신 i 입력
url = url_load['url'][0]

# Chrome driver를 이용하여 url 열기
path = "chromedriver.exe"
driver = webdriver.Chrome(path)
driver.get(url)

 

 

 

2. 항목 별 평점 (총 6가지) 크롤링

# 항목 별 별점 - 1. 청결도
class_0 = driver.find_elements_by_css_selector(".score.ng-binding")
rating_class_0 = class_0[0].text

# 항목 별 별점 - 2. 식사
class_1 = driver.find_elements_by_css_selector(".score.ng-binding")
rating_class_1 = class_1[1].text

# 항목 별 별점 - 3. 시설
class_2 = driver.find_elements_by_css_selector(".score.ng-binding")
rating_class_2 = class_2[2].text

# 항목 별 별점 - 4. 위치
class_3 = driver.find_elements_by_css_selector(".score.ng-binding")
rating_class_3 = class_3[3].text

# 항목 별 별점 - 5. 객실
class_4 = driver.find_elements_by_css_selector(".score.ng-binding")
rating_class_4 = class_4[4].text

# 항목 별 별점 - 6. 서비스
class_5 = driver.find_elements_by_css_selector(".score.ng-binding")
rating_class_5 = class_5[5].text

또는

# 항목 별 별점 - 1. 청결도
class_0 = driver.find_elements_by_css_selector(".score.ng-binding")
rating_class_0 = class_0[0].text

# 항목 별 별점 - 2. 식사
rating_class_1 = class_0[1].text

# 항목 별 별점 - 3. 시설
rating_class_2 = class_0[2].text

# 항목 별 별점 - 4. 위치
rating_class_3 = class_0[3].text

# 항목 별 별점 - 5. 객실
rating_class_4 = class_0[4].text

# 항목 별 별점 - 6. 서비스
rating_class_5 = class_0[5].text

 

 

 

3. 리뷰 페이지 넘기면서 리뷰 크롤링

# 페이지 넘기면서 리뷰 크롤링
review_list = []

page = 4
for i in range(0, page):

    # 리뷰 크롤링
    review_raw = driver.find_elements_by_css_selector(".txt_comment.ng-binding")
    for review in review_raw:
        i = review.text
        review_list.append(i)
    time.sleep(1)

    # 후기 페이지 넘기기
    driver.find_element_by_css_selector('body > div > div > div.container.ng-scope > div.content > div.hotel_used_review.ng-isolate-scope > div.review_bk.ng-scope > div.paginate > a.direction.next').click()

 

+ 2021.05.13 수정

어제 집에서 작성한 코드를 학원에서 돌려보니 자꾸 오류가 나서 css_selector의 class 부분을 수정했다.

# 페이지 넘기면서 리뷰 크롤링
review_list = []

page = 4
for i in range(0, page):

    # 리뷰 크롤링
    review_raw = driver.find_elements_by_css_selector(".good_bad")
    for review in review_raw:
        i = review.text
        review_list.append(i)
    time.sleep(1)

    # 후기 페이지 넘기기
    driver.find_element_by_css_selector('body > div > div > div.container.ng-scope > div.content > div.hotel_used_review.ng-isolate-scope > div.review_bk.ng-scope > div.paginate > a.direction.next').click()

 

 

 


 

 

 

오늘 포기하지 않고 계속 시도해서 혼자 힘으로 개별 코드 짜기 성공했다!

성공하고 정말 학원에서 소리지를 뻔 했다 ㅋㅋㅋ

 

 

 

그런데 개별 코드를 작성하고 합치려고 하는데 자꾸 오류가 난다..

코드 합치는건 내일 선생님한테 봐달라고 해야겠다!

Comments