파이썬 크롤링 멜론 requests, BeautifulSoup Top100 차트 데이터 수집
▶ 목표
- 가수명(singer_lst), 곡명(song_lst) 수집
- 랭킹, 가수명, 곡명을 저장할 수 있는 딕셔너리 생성 {'랭킹':rank_lst, '가수명':singer_lst, '곡명':song_lst}
- pandas를 이용해서 DataFrame 생성하고 엑셀 파일 형식으로 저장
① 멜론 탑100 차트에 접근하여 파이썬 객체 형식으로 가져오기
# pandas, requests, BeautifulSoup 불러오기
import pandas as pd
import requests as req
from bs4 import BeautifulSoup as bs
# header 만들기
header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
# url, header, response 확인
url = 'https://www.melon.com/chart/index.htm'
res = req.get(url, headers=header)
res
# 파이썬 객체 데이터로 변환
html = bs(res.text,'lxml')
html
② 1위~100위 곡명 크롤링하기
F12 개발자도구를 이용해서 곡명이 있는 태그 확인
# 1~100 곡명 크롤링해보기
# song_lst 에 txt만 담아보기
# 클래스명이나 아이디명에 공백은 .으로 대체
# 곡명 데이터에 접근
song = html.select('.ellipsis.rank01>span>a')
# 가져온 곡명 데이터의 text만 for문(for comprehension 방식)을 이용해서 담기
song_lst = [i.text for i in song]
song_lst
③ 1위~100위까지 가수명 크롤링하기
※ 가수명의 경우 한 곡을 여러 가수가 같이 부를 수 있기 때문에 데이터를 가져올 때 span태그가 있는 쪽으로 접근
singer = html.select('.ellipsis.rank02>span')
singer_lst = [i.text for i in singer]
④ 랭킹 리스트를 생성하고 각 리스트의 길이 확인
rank_lst = [i+1 for i in range(len(song_lst))]
print(len(rank_lst))
print(len(singer_lst))
print(len(song_lst))
⑤ 딕셔너리 형태로 생성하고 데이터 프레임 만들기
top100 = {'랭킹':rank_lst, '가수명':singer_lst, '곡명':song_lst}
top100_df = pd.DataFrame(top100)
top100_df
⑥ 엑셀 형식으로 저장하기
# 엑셀 형식으로 기본 폴더에 index번호가 안들어가게 생성
top100_df.to_excel('./멜론탑100차트.xlsx', index=False)
'Python' 카테고리의 다른 글
파이썬 크롤링 requests, BeautifulSoup 네이버 영화 관람객 리플 데이터 수집 (1) | 2023.01.19 |
---|---|
파이썬 크롤링 requests, BeautifulSoup 네이버 영화 평점 수집 데이터 수집 (0) | 2023.01.18 |
파이썬 크롤링 requests, BeautifulSoup (0) | 2023.01.16 |
파이썬 라이브러리 Matplotlib(Python Library Matplotlib) (0) | 2023.01.15 |
파이썬 라이브러리 Pandas (Python Library Pandas) (0) | 2023.01.15 |
댓글