본문 바로가기

Study/스파르타코딩(왕초보 시작반)

3주차 과제

3주차는 파이썬을 어떻게 사용하는지, 웹스크래핑이 무엇이고 그 방법을 배웠으며 몽고DB를 활용하고 사용해보았다.

이것을 바탕으로 지니뮤직의 페이지를 웹스크래핑하여 차트의 랭킹과 노래 제목, 가수를 가져와 몽고DB에 저장하고 그것들을 가져와보자.

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[slice(2)].strip()
    title = tr.select_one('td.info > a.title.ellipsis').text.strip()
    singer = tr.select_one('td.info > a.artist.ellipsis').text

    music = {
        'rank':rank,
        'title':title,
        'singer':singer
    }
    db.genie.insert_one(music)

doc = db.genie.find({})

for a in doc:
    print(a['rank'], a['title'], a['singer'])

 

그동안 배웠던 것들을 이용해서 1시간 내외에서 해결했던 것 같다. 어려웠던 점은 랭킹의 뒤에 있던 공백과 제목 앞에 있던 공백이 있어 깔끔하게 결과가 나오지 않아 애를 먹었다. 그래서 구글에서 여러번 검색하여 문제를 해결할 수 있었다.

 

검색해서 참고했던 페이지들을 아래 참고 자료에 올려두었다.

 

⁂참고 자료

파이썬의 문자열에서 부분 추출

https://www.delftstack.com/ko/howto/python/extract-substring-from-a-string-in-python/

 

Python의 문자열에서 부분 문자열 추출

Python의 문자열에서 부분 문자열을 추출하는 방법 알아보기

www.delftstack.com

파이썬의 문자열에서 공백을 제거하는 방법

 

[python] 문자열에서 모든 공백을 제거하십시오. - 리뷰나라

문자열, 양쪽 끝 및 단어 사이의 모든 공백을 제거하고 싶습니다. 이 파이썬 코드가 있습니다 : def my_handle(self): sentence = ' hello apple ' sentence.strip() 그러나 문자열의 양쪽에서 공백 만 제거합니다.

daplus.net

몽고DB에서 데이터 불러오는 방법
https://seogwipo.tistory.com/entry/파이썬에서-몽고DBMongoDB-데이터-읽어들이기Read

 

파이썬에서 몽고DB(MongoDB) 데이터 읽어들이기(Read)

파이썬에서 몽고DB(MongoDB) 데이터 읽어들이기(Read) 방법은 간단하다. 우선 Insert 와 거의 같다고 보면된다. 1. 첫번째로 모듈을 Import 한다. 1 2 import pymongo from pymongo import MongoClient cs 2...

seogwipo.tistory.com

 

728x90

'Study > 스파르타코딩(왕초보 시작반)' 카테고리의 다른 글

내일배움단 11일메이킹챌린지 1일차  (0) 2021.07.19
3주차 에피소드  (0) 2021.07.17
3주차  (0) 2021.07.13
2주차 과제  (0) 2021.07.09
2주차  (0) 2021.07.05