관리 메뉴

DeseoDeSeo

[Crawling] 음원 순위 데이터 수집 본문

Python

[Crawling] 음원 순위 데이터 수집

deseodeseo 2023. 8. 24. 17:04
import requests as req
from bs4 import BeautifulSoup as bs
head = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}

 

 

1. req를 통해서 멜론차트 정보를 요청
res1 = req.get("https://www.melon.com/chart/index.htm", headers = head)
res1

2. bs을 통해서 html데이터로 변형
soup = bs(res1.text, "lxml")

 

 

3. 노래제목 수집
song = soup.select("#lst50 > td:nth-child(6) > div > div > div.ellipsis.rank01 > span > a")
for i in song:
    print(i.text)

* 강사님 답 : ("div.ellipsis.rank01> span > a")

  • 클래스 값 중간에 공백 有 -> 클래스가 여러개.
  •  공백을 지우고 반드시 온점.으로 이어준다.

 


 

 4. 가수 이름 수집
singer = soup.select("div.ellipsis.rank02>span.checkEllipsis")
데이터의 개수가 정해진 경우에는 
반드시 데이터 검증이 필요하다.
( 데이터의 길이, 데이터의 중복여부를 확인해야한다.)
len(singer)

5. 수집된 데이터를 텍스트 정보만 추출해서 저장
song_list=[]
singer_list =[]
for i in range(len(song)):
    song_list.append(song[i].text)
    singer_list.append(singer[i].text)
song_list
singer_list


6. 표를 제작
import pandas as pd
dic = {"가수이름":singer_list, "노래제목":song_list}
melon = pd.DataFrame(dic)
melon


7. 파일로 제작
< 인코딩 작업 >
  # 한글이 깨지지 않게 반드시 해줘야한다.
  1. utf-8
  2. euc-kr
  3. utf-8-sig
melon.to_csv("멜론차트.csv", encoding="euc-kr")

 

'Python' 카테고리의 다른 글

[ Machine Learning ] Ex01_and연산_학습하기  (0) 2023.08.24
[ Machine Learning ] 머신러닝  (1) 2023.08.24
[Crawling] Request 사용법  (0) 2023.08.24
[Python] matplotlib  (0) 2023.08.23
[Python] CrimeData 실습  (0) 2023.08.23