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)
실행 결과
반응형
'스파르타코딩클럽' 카테고리의 다른 글
[스파르타코딩클럽] 비개발자를 위한, 웹개발 종합반 4주 2일차 후기 (0) | 2023.01.04 |
---|---|
[스파르타코딩클럽] 비개발자를 위한, 웹개발 종합반 4주 1일차 후기 (0) | 2023.01.04 |
[스파르타코딩클럽] 비개발자를 위한, 웹개발 종합반 3주차 1일 후기 (0) | 2023.01.03 |
[스파르타코딩클럽] 비개발자를 위한, 웹개발 종합반 2주차 마무리 & 숙제 (0) | 2023.01.02 |
[스파르타코딩클럽] 비개발자를 위한, 웹개발 종합반 2주차 2일차 후기 (0) | 2023.01.02 |
댓글