강의/데이터분석

데이터분석 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'}

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)
 
 

trs = soup.select 한후 지니 1위 td.info HTML을 Copy selector 하여 붙여 넣고 tr만 남긴채 지운 후(뒤에는 똑같아서) print(trs)

제목 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을 왜 하는지도 모르고 따라했지만 차차 알아가야겠다 어렵다
하나만을 골라 사용한다는 의미로 알아야겠다.