[크롤링] 1달 간의 데이터 수집

 파이썬으로 별도의 날짜 값을 작성하는 방법이 있지만, 28일, 30일 등의 불규칙 적인 경우를 배제하기 위해 pandas의 함수를 이용한다.

import pandas as pd

pd.date_range(start="시작일",end="종료일")

-배열의 형태로 반환


예제)

2022년 1월 부터 5월 12일 까지의 영화 순위 데이터 수집

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#끝나는 값 포함
date = pd.date_range(start="2022-01-01",end="2022-05-12")
date.strftime('%Y%m%d')
#Y : 4글자 년도, y :2글자 년도
days = date.strftime('%Y%m%d')
 
#데이터 프레임을 위한 배열 초기화
title_list = []
score_list = []
rank_list = []
 
for i in tn(days) :
    #url 의 맨 끝은 날자를 쿼리 스트링으로 받으므로, 마지막 부분의 날짜만 수정
    url = 'https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=cur&tg=0&date='+i
    
    #파싱 수행
    res = req.get(url);
    soup = bs(res.text, 'lxml')
    title = soup.select('div.tit5>a')
    score = soup.select('td.point')
 
    for j in range(len(title)) :
        title_list.append(title[j].text.strip())
        score_list.append(score[j].text.strip())
        rank_list.append(j+1)
    
#데이터 프레임    
movie_rank = pd.DataFrame({'순위':rank_list,'제목':title_list, '평점':score_list})
movie_rank.set_index('순위',inplace = True)
display(movie_rank)
cs



댓글