스파르타코딩_왕초보시작반 3주차
3주차 과제 중 지니뮤직의 1~50위 곡 스크래핑을 하는 것이 있었다.
곡 제목, 가수 이름은 쉽게 가져올 수 있었다. 하지만 순위를 스크래핑하는 과정에서 많은 여백이 나왔다.
이런식으로....
여백을 제거하는 .strip() 명령어를 써도 그런다. 이유는 순위에서 text를 가져오면 뒤에 있는 상승인지 하락인지 하는 텍스트도 가져오기 때문이다. 이러한 상황에서는 스플릿해서 앞의 몇글자만 가져와야만 했다.
그래서 코드를
rank = tr.select_one('td.number').text[0:2].strip()
이렇게 짜야한다.text[0:2]는 텍스트에서 0시작점에서 2번째꺼까지 가져온다는 것이다. 나머지는 strip()으로 여백 다 제거
그러면 이렇게 깔끔히 나온다.
전체 코드는 다음과 같다.
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&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
rank = tr.select_one('td.number').text[0:2].strip()
song = tr.select_one('td.info > a.title.ellipsis').text.strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text.strip()
print(rank,song,artist)
Author And Source
이 문제에 관하여(스파르타코딩_왕초보시작반 3주차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@atomicphysics/스파르타코딩왕초보시작반-3주차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)