
안녕하세요, 3주차 숙제를 해결하는 중에 아래와 같이 코드를 짰는데 계속 50위 1개만 실행되어서 문의 드립니다.ㅜㅜ
(튜터님 해설을 같이 보니 다른 게 없는 것 같아 보여서요)
제 코드:
import requests
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=M&rtm=N&ymd=20210701',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
songs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for song in songs:
title = song.select_one('td.info > a.title.ellipsis').text.strip()
rank = song.select_one('td.number').text[0:2].strip()
artist = song.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
실행 결과
/Users/yoonheekoh/Desktop/Sparta/pythonProject/venv/bin/python /Users/yoonheekoh/Desktop/Sparta/pythonProject/genie.py
50 Off My Face Justin Bieber
종료 코드 0(으)로 완료된 프로세스
해설 코드:
import requests
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=M&rtm=N&ymd=20210701',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
rank = tr.select_one('td.number').text[0:2].strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
확인 부탁 드립니다!!
