강의/데이터분석
데이터분석 1주차 숙제 - 📄 지니 뮤직 1~50위 곡을 스크래핑 해보세요
MotherCarGasoline
2022. 1. 24. 22:37
첫번째 과제로 한번 도 해보지 못한 일을 시작하였다..
머리가 터질것같아 풀이와 함께 돌려보았다.
그나마 나아졌다
@풀이 정답@
import requests
import pandas as pd
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://www.genie.co.kr/chart/top200?ditc=D&ymd=20211103&hh=13&rtm=N&pg=1',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
ㅡ여기서부터 작성함 ㅡ
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
print(trs)
for tr in trs:
title = tr.select_one( 'td.info > a.title.ellipsis').text.strip() # strip() 띄어쓰기 없애기
rank = tr.select_one('td.number').text[0:2].strip() # text[0:2]숫자표기는 십단위까지 표기
artist = tr.select_one('td.info > a.artist.ellipsis').text # .text는 내용표기
print(title,rank,artist)
제목 Title #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis
순위 Rank #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number
가수 Artist #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis
처음이라 tr.select_one을 왜 하는지도 모르고 따라했지만 차차 알아가야겠다 어렵다
하나만을 골라 사용한다는 의미로 알아야겠다.