[Week 03] 지니뮤직 웹스크래핑하기
다른 부분은 어렵지 않았으나, 노래 제목을 떼 올 때 어려웠다.
예를 들면 노래 제목만 나와야 하는 상황에, "19금" 단어+공백이 함께 출력되기 때문...
이 부분은 if 문을 사용해 title 안에 '19금' 단어가 있을 경우, .strip을 사용해 단어를 제거해주고, title을 재 정의해주는 방법을 사용했다.
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
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=D&rtm=N',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
cut = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in cut:
rank = tr.select_one('td.number').text[:2].strip()
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
if "19금" in title:
title = title.strip("19금")
title = title.strip()
artist = tr.select_one('a.artist.ellipsis').text
doc = {
'rank' : rank,
'title' : title,
'artist' : artist
}
db.ranking.insert_one(doc)
Author And Source
이 문제에 관하여([Week 03] 지니뮤직 웹스크래핑하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wendyshme/Week-03-지니뮤직-웹스크래핑하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)