배움 __IL/TIL 0기

TIL-3 지니뮤직의 1~50위 곡을 스크래핑

Mo_bi!e 2022. 10. 28. 16:23

<문제>

지니뮤직의 1~50위 곡을 스크래핑 할것

 

 

 

<소스코드>

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

# 0) 출력 할 때는 `print(rank, title, artist)` 하면 됩니다!
#
# 1) 앞에서 두 글자만 끊기! `text[0:2]` 를 써보세요!
#
# 2) 순위와 곡제목이 깔끔하게 나오지 않을 거예요. 옆에 여백이 있다던가, 다른 글씨도 나온다던가.. 파이썬 내장 함수인 `strip()`을 잘 연구해보세요!
#
sample = soup.select_one('#body-content > div.newest-list > div > table > tbody > tr:nth-child(1)')
# print(sample.text)

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

#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

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

    # print(rank)
    # print(title)
    # print(artist)
    print(rank, title, artist)

 

<회고> 

 

text[] , strip() 라는 도구를 이용하면 복잡해 보일수 있는것을 단순하게 해결할수 있게 된다.

 

이런 점에서 프레임워크 등을 사용하기 이전에 본래 언어 고유기능을 익히고 용도를 파악하는것이 후일을 생각하면 편해지는 길인 것 같다.

'배움 __IL > TIL 0기' 카테고리의 다른 글

TIL - 자료표현과 변수 [221105]  (0) 2022.11.05
[TIL-5] AWS로 서버 구매부터 실행 후 최종 배포까지  (0) 2022.11.02
TIL - 4 POST & GET 하기  (0) 2022.10.28
TIL - 2  (0) 2022.10.20
TIL - 1  (0) 2022.10.18