네이버 영화 평점순 크롤링¶
In [3]:
%%html
<!-- 에디터 폰트를 조정합니다. -->
<style type='text/css'>
.CodeMirror{
font-size: 14px;
font-family: consolas;
</style>
import¶
In [49]:
import requests
from bs4 import BeautifulSoup
import datetime # 날짜 처리 라이브러리(날짜가 text가 아닌 객체로 정의 되어있음)
url을 딕셔너리 형태로 담기 / GET 요청 => 함수에 담기¶
In [10]:
# 일별 순위를 쉽게 받기 위해 함수로 받아주기
def get_naver_movie(sel='cur', date='20200604'):
url = 'https://movie.naver.com/movie/sdb/rank/rmovie.nhn'
params = {'sel':sel,'date':date} # url 값에 함수 파라메터 넣어주기
# get 요청
response = requests.get(url, params=params)
status_code = response.status_code
if status_code == 200:
text = response.text
soup = BeautifulSoup(text)
else:
soup = 'error'
return soup # 함수값 soup로 리턴
In [16]:
# 변수에 함수 담아주기 깔끔!
soup = get_naver_movie()
# print(soup)
클래스 가져오기¶
In [22]:
# 테이블 태그의 list_ranking 클래스
movie_table = soup.select_one('table.list_ranking')
# print(movie_table)
# 하위 테이블 가져오기
movie_tr_all = movie_table.select('tr')
print(movie_tr_all[0])
속성 값 가져오기¶
In [37]:
movie_tr_one = movie_tr_all[2]
movie_title = movie_tr_one.select_one('a[title]').text
# select_one은 text 따로 추출 필요, 간단하게 표현하면 아래 식
# movie_title = movie_tr_one.a['title']
movie_point = movie_tr_one.select_one('td.point').text
print(movie_title, movie_point)
In [46]:
# 반복해서 전체 가져오기
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,)) # 모양 주의!
#print(title, point)
print(movie_title_point_list)
*날짜 함수 사용하기¶
- 날짜를 str 에서 obj로 변환시켜 줌
- datetime
- strftime('%Y%m%d') : 날짜함수로 str->obj 된 날짜를 다시 str으로 변환
In [72]:
# 날짜 함수 사용법
now = datetime.datetime.now()
print(now)
tommorrow = now + datetime.timedelta(days=1)
print(tommorrow)
print(type(tommorrow)) # <class 'datetime.datetime'> obj임!
yesterday = now + datetime.timedelta(days=-1)
print(yesterday.strftime('%Y%m%d') ) # 20200604(str)
날짜 함수 네이버 영화에 적용¶
In [69]:
def get_date(day):
now = datetime.datetime.now()
ret_date = now + datetime.timedelta(days=day)
return ret_date.strftime('%Y%m%d')
In [73]:
# 10일 전 날짜 가벼왓
p_date = get_date(-10)
print(p_date)
'웹 크롤링 > Jupyter Notebook - 크롤링' 카테고리의 다른 글
[프로그램 설치] 아나콘다 및 주피터 노트북 설치 A-Z (0) | 2020.09.28 |
---|---|
주피터 - 웹 크롤링 - 네이버 책 검색기 (0) | 2020.06.15 |
####주피터 실습 - 식신로드 서울지역 만점 식당 뽑아오기 (0) | 2020.06.09 |
Jupyter 웹크롤링 - Selenium / 활용해서 뉴스 크롤링& 로그인 (0) | 2020.06.08 |
Jupyter - Login 정보 session에 담기 / 로그인 후 크롤링 / 로그인 후 내 정보 크롤링 (0) | 2020.06.08 |
댓글