DeseoDeSeo
[Crawling] 음원 순위 데이터 수집 본문
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 |