ABOUT ME

-

  • 네이버 영화 평점 리뷰 추출해보기 (with 파이썬)
    코딩 연습 2022. 12. 30. 20:53

    네이버 영화 평점과 리뷰 페이지에 대한 파이썬 크롤링 소스 코드. 추출하다보니 "<br>" 태그 부분에 대한 크롤링 방법을 터득한 것이 있는데... 

     

     

    네이버 영화 평점 리뷰 크롤링하기

    네이버 영화 평점리뷰 개발자도구
    네이버 영화 평점리뷰 개발자도구

    네이버 영화 평점 리뷰 웹사이트 : https://movie.naver.com/movie/point/af/list.naver

    여기서 하단 페이징 처리 부분을 클릭하면 페이지 파라미터가 붙은 URL을 브라우저 주소창에서 확인할 수 있다.

    https://movie.naver.com/movie/point/af/list.naver?&page=1

     

    good4me.co.kr

     

    파이썬 크롤링 소스 코드

    ## 네이버 영화 평점 추출하기
    
    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    
    header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}
    for page in range(1, 3):
        url = f'https://movie.naver.com/movie/point/af/list.naver?&page={page}'
        res = requests.get(url, headers=header)
        # print(res.content.decode('utf-8'))
        soup = BeautifulSoup(res.text, 'html.parser')
        tb_trs = soup.find('table', class_='list_netizen').find_all('tr')
        print(len(tb_trs))
        for i, tr in enumerate(tb_trs):
            grade_reviews = []
            for j, td in enumerate(tr.find_all('td')):
                if j == 0:
                    grade_reviews.append(td.text.strip())
                if j == 1:
                    grade_reviews.append(td.find('a').text.strip())
                    grade_reviews.append(td.find('div', {'class': 'list_netizen_score'}).find('em').text)
                    for k, content in enumerate(td.find_all(text=True)):
                        if k == 8:
                            content2 = content.replace('\n', '').replace('\t', '').strip()
                            grade_reviews.append(content2)
                if j == 2:
                    td2 = td.find_all(text=True)
                    grade_reviews.append(td2[1])
        
            print(grade_reviews)

    ※ "<br>" 태그 부분 크롤링

    • <td> 부분에서 리뷰 글을 추출하기 위해 코드를 짜고 보니 "<br>" 태그가 방해를 했는데, 이 부분에 대해 find_all(text=True)를 적용하면, ['\n', '영웅', '\n', '\n', '별점 - 총 10점 중', '10', '\n', '\n', '개봉첫날 혼자보고 주말에 가족 모두 보려고 또 예매했어요연기,음악  모두 감동적이예요 \n', '신고', '\n'] 결과를 볼 수 있고,
    • index 8 즉, 9번째 부분을 출력하면 리뷰 글을 추출할 수 있다.
    • 그리고, \n\t 특수문자를 제거하기 위해 replace() 함수를 사용했다. 

    페이지 수를 증가 - range(1, 2) 부분의 2를 증가 - 시키면 다른 페이지도 추출할 수 있다.

     

    [실행 결과]

    11
    []
    ['18636907', '오늘 밤, 세계에서 이 사랑이 사라진다 해도', '10', '
    꼭보세요..나만 스트레스 받기 싫으니깐 꼭보세요', '22.12.30']
    ['18636906', '아바타: 물의 길', '10', '영상미가 미쳤고, 왜 13년의 세월이 걸렸는지 납득이 가는 영화. 눈이 즐거워지는 영화. 그러면서 
    감동 있는 영화.꼭 추천합니다!!', '22.12.30']
    ['18636905', '올빼미', '10', '정말 재밌게 보고 왔음, 무서움! 그치
    만 재미짐', '22.12.30']
    ['18636904', '아바타', '4', 'CG는 대단했지만 보는동안 그냥 저는 잤어요...', '22.12.30']
    ['18636903', '외계+인 1부', '4', '터미네이터, 에어리언, 백투더퓨처, 매트릭스, 전우치, 암살을 막 섞어서 비빔밥을 만들었는데… 맛이 없
    음', '22.12.30']
    ['18636902', '오늘 밤, 세계에서 이 사랑이 사라진다 해도', '10', '
    펑펑 울면서 봤습니다ㅠㅠ', '22.12.30']
    ['18636899', '외계+인 1부', '10', '정말강추...ㅎㅎ  .', '22.12.30']
    ['18636900', '아바타: 물의 길', '10', '재밌어요. 영상미가 좋아요', '22.12.30']
    ['18636898', '젠틀맨', '1', '최근10년간 본 영화 중 최악.첨으로 평
    점남김. 시간 낭비, 돈낭비.', '22.12.30']
    ['18636897', '젠틀맨', '8', '주연배우들의 연기는 말할것도 없이 너
    무 잘하고 내용도 재밌어서 시간가는 줄 모르고 봤어요', '22.12.30']
    11
    []
    ['18636896', '나쁜 녀석들: 더 무비', '1', '나쁜 녀석들의 좋은 추억... 이영화가 다 망가뜨림...', '22.12.30']
    ['18636895', '올빼미', '10', '연기력도 연출도 스토리도 완벽', '22.12.30']
    ['18636894', '아바타: 물의 길', '6', '솔직히 스토리는 개판임.영화
    보면서 시계를 몇번이나 봤는지 모를 정도로 지루함.CG 보려고 보는건
    데 예전에 아바타 1 봤을때만큼의 충격은 없었음. 요즘 CG 기술들이 다들 좋아서', '22.12.30']
    ['18636893', '아바타: 물의 길', '10', '', '22.12.30']
    ['18636891', '영웅', '10', '시작부터 끝까지 눈물이 난 영화.감사합
    니다 나라를 되찾기위해 힘쓰신 모든 영웅들', '22.12.30']
    ['18636890', '젠틀맨', '10', '너무 재밌어요~~덩달아 기분도 굿굿~~
    갠적으론 아바타보다 훨씬 재미났어요왜 관객이 안 들어오는지 안타까
    움이절로~~~암튼 내취향인지 재미났어요~~', '22.12.30']
    ['18636889', '영웅', '10', '영화 보는 내내 울컥했네요 ..!!!가족들, 연인, 친구들과 꼭 보셨으면 좋겠습니다!', '22.12.30']
    ['18636887', '영웅', '10', '올 한해 마무리하면서 가족들과 동반하여 2시간여 동안 벅찬 역사적 감동을 선사해준 제작진과 열연을 해주신 
    배우분들에게 감사른드립니다.', '22.12.30']
    ['18636886', '아바타: 물의 길', '10', '10년기다린 보람이있는 역시! 너무 넋놓고봤어요~~', '22.12.30']
    ['18636885', '영웅', '10', '보는내내 울컥했네요..잊혀질때쯤 다시 
    또보려구요너무 슬프고 감명깊게봤습니다 아직도 마음이 찡하네요', '22.12.30']

     

Designed by goodthings4me.