<문제>
지니뮤직의 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 |