본문 바로가기
스파르타코딩클럽

[스파르타코딩클럽] 비개발자를 위한, 웹개발 종합반 3주차 마무리 & 숙제 후기

by EveryDayJUNES 2023. 1. 3.
728x90
반응형
반응형

1.숙제

3주 차의 숙제는 '지니 뮤직의 1~50위 곡을 스크래핑 해보세요.'입니다. 순위, 제목, 가수 3가지를 가져오면 되는 숙제였습니다. 영화 순위를 크롤링 했던 것과 비슷하게 하면 쉽게 숙제를 풀이할 수 있었습니다.

 

관련 소스

import requests
from bs4 import BeautifulSoup

from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sprta@cluster0.2fdicy9.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

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')

#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis

songs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

for song in songs:
    rank = song.select_one('td.number')
    song_title = song.select_one('td.info > a.title.ellipsis')
    singer = song.select_one('td.info > a.artist.ellipsis').text
    print(rank,song_title,singer)
 

 

실행 결과

실행 결과의 일부입니다. 순위 부분이 상승 내용까지 함께 담고 있고 노래 제목에도 여백이 많은 것을 볼 수가 있었습니다. 그래서 순위에는 앞에 두 글자만 가져올 수 있게 text 뒤에 [0:2]를 더 붙였고 노래 제목에는. strip()를 이용해서 문자열의 공백을 지워줬습니다.

 

관련 소스

for song in songs:
    rank = song.select_one('td.number').text[0:2]
    song_title = song.select_one('td.info > a.title.ellipsis').text.strip()
    singer = song.select_one('td.info > a.artist.ellipsis').text
    print(rank,song_title,singer)
 

실행 결과

반응형

댓글