-
크롤링 (Beautiful Soup 라이브러리) - 네이버 영화 순위Python 2023. 2. 1. 17:20
네이버에서 제공하는 영화 랭킹 사이트의 데이터를 크롤링 해보자
( 네이버 사이트 링크 : https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=cnt&date=20230131 )
import urllib.request from bs4 import BeautifulSoup from pandas import DataFrame url = 'https://movie.naver.com/movie/sdb/rank/rmovie.naver' html = urllib.request.urlopen(url) soup = BeautifulSoup(html, 'html.parser') tags = soup.findAll('div', attrs={'class':'tit3'}) print('-' * 30) print( tags ) print('-' * 30) print('\n # 영화 제목만 뽑아내기') for tag in tags : # 하위 <a> 태그 아래의 글자 영역 print(tag.a.string) # text 속성도 동일한 결과를 보여 준다 print('\n # 앵커의 href 속성') url_header = 'https://movie.naver.com' for tag in tags: print('-' * 50) print(url_header + tag.a['href']) mytrs = soup.find_all('tr') no = 0 totallist = [] for one_tr in mytrs : title = '' up_down = '' mytd = one_tr.find('td', attrs={'class':'title'}) if(mytd != None) : no += 1 newno = str(no).zfill(2) mytag = mytd.find('div', attrs={'class':'tit3'}) title = mytag.a.string mytd = one_tr.select_one('td:nth-of-type(3)') myimg = mytd.find('img') if myimg.attrs['alt'] =='up' : up_down = '상승' elif myimg.attrs['alt'] =='down' : up_down = '강등' else : up_down = '불변' change = one_tr.find('td', attrs={'class':'range ac'}) if change == None : pass else : change = change.string # print(newno + '/' + title + '/' + up_down + '/' + change) totallist.append((newno, title, up_down, change)) mycolumn = ['순위', '제목', '변동', '변동값'] myframe = DataFrame(totallist, columns = mycolumn) filename = 'naverMovie.csv' myframe.to_csv(filename, encoding='utf-8', index=False) print(filename + '파일이 저장되었습니다.', sep='')
<title / tit3 >
<alt 속성> up_down 구분
< naverMovie.csv > 가 저장되었다.
'Python' 카테고리의 다른 글
파이썬 크롤링 (Selenium / Chrome Driver) 설치하기 (0) 2023.02.03 크롤링 (Beautiful Soup 라이브러리) - 네이버 만화 읽어오기 (0) 2023.02.01 크롤링 (Beautiful Soup 라이브러리) - 선택자(selector) (0) 2023.02.01 크롤링 (Beautiful Soup 라이브러리) - 태그의 속성 (0) 2023.02.01 크롤링 (문자열의 집합을 표현하는 정규 표현식) (0) 2023.02.01