Python

Web-Crawling (네이버 영화)

2020. 6. 5. 14:58

네이버 영화

%%html

<!-- 에디터 폰트를 조정합니다. -->
<style type='text/css'>
.CodeMirror{
    font-size: 14px;
    font-family: Bitstream Vera Sans Mono;}
</style>
import requests
from bs4 import BeautifulSoup
import datetime

날짜 지정하는 함수

 def get_date(day):
    now = datetime.datetime.now()
    #tomorrow = now + datetime.timedelta(days=1)
    #print(type(tomorrow))
    #yesterday = now + datetime.timedelta(days=-1)
    # date object -> str
    ret_date = now + datetime.timedelta(days=day)
    return ret_date.strftime('%Y%m%d')
p_date = get_date(-10)
p_date
'20200526'

함수 작업

  • sel에 조회순=cnt / 평점순(현재상형영화)=cur / 평점순(모든영화)=pnt

def get_naver_movie(sel='pnt', date=get_date(-1)):
    url = 'https://movie.naver.com/movie/sdb/rank/rmovie.nhn'
    params = {'sel':sel,
              'date':date}
    # Get 요청
    response = requests.get(url, params=params)
    status_code = response.status_code
    print(status_code)
    if status_code == 200:
        text = response.text
        soup = BeautifulSoup(text) #str -> BeautifulSoup 객체 변환
    else:
        soup = 'Error'
    return soup

영화 전체 받기

soup = get_naver_movie()
movie_table = soup.select_one('table.list_ranking')
#movie_table
movie_tr_all = movie_table.select('tr')
200

영화 한 편의 이름과 평점

movie_tr_one = movie_tr_all[2]
movie_title = movie_tr_one.select_one('a[title]').text
movie_point =movie_tr_one.select_one('td.point').text
print(movie_title, movie_point)
그린 북 9.59

영화 전체의 이름과 평점

movie_title_point_list = []
for movie_tr_one in movie_tr_all:
    movie_title = movie_tr_one.select_one('a[title]')
    movie_point =movie_tr_one.select_one('td.point')

    # 존재 하는지 체크
    if movie_title:
        title = movie_title.text
    else:
        continue
    if movie_point:
        point = movie_point.text
    else:
        continue
    movie_title_point_list.append((title, point))
movie_title_point_list
[('그린 북', '9.59'),
 ('가버나움', '9.59'),
 ('베일리 어게인', '9.53'),
 ('포드 V 페라리', '9.49'),
 ('원더', '9.49'),
 ('주전장', '9.49'),
 ('아일라', '9.49'),
 ('당갈', '9.47'),
 ('쇼생크 탈출', '9.44'),
 ('터미네이터 2:오리지널', '9.44'),
 ('보헤미안 랩소디', '9.42'),
 ('덕구', '9.42'),
 ('나 홀로 집에', '9.41'),
 ('월-E', '9.41'),
 ('살인의 추억', '9.40'),
 ('라이언 일병 구하기', '9.40'),
 ('인생은 아름다워', '9.40'),
 ('매트릭스', '9.40'),
 ('사운드 오브 뮤직', '9.40'),
 ('포레스트 검프', '9.40'),
 ('빽 투 더 퓨쳐', '9.40'),
 ('헬프', '9.40'),
 ('글래디에이터', '9.39'),
 ('위대한 쇼맨', '9.39'),
 ('클래식', '9.39'),
 ('센과 치히로의 행방불명', '9.39'),
 ('토이 스토리 3', '9.38'),
 ('타이타닉', '9.38'),
 ('알라딘', '9.38'),
 ('어벤져스: 엔드게임', '9.38'),
 ('안녕 베일리', '9.37'),
 ('레옹', '9.37'),
 ('죽은 시인의 사회', '9.37'),
 ('캐스트 어웨이', '9.37'),
 ('헌터 킬러', '9.37'),
 ('동주', '9.37'),
 ('반지의 제왕: 왕의 귀환', '9.37'),
 ('아이 캔 스피크', '9.37'),
 ('집으로...', '9.37'),
 ('굿 윌 헌팅', '9.36'),
 ('히든 피겨스', '9.36'),
 ('굿바이 마이 프랜드', '9.35'),
 ('여인의 향기', '9.35'),
 ('주토피아', '9.35'),
 ('서유기 2 - 선리기연', '9.35'),
 ('모노노케 히메', '9.35'),
 ('달링', '9.35'),
 ('클레멘타인', '9.35'),
 ('쉰들러 리스트', '9.35'),
 ('세 얼간이', '9.35')]