728x90
반응형
3주차 과제
- 지니뮤직의 1~50위 곡을 크롤링하기!!
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')
musics = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for music in musics:
m_rank = music.select_one('td.number')
m_title = music.select_one('td.info > a.title.ellipsis') # class 이름이 title이면서 ellipsis인 하나의 html 요소를 선택
m_artist = music.select_one('td.info > a.artist.ellipsis')
rank, title, artist = m_rank.text, m_title.text, m_artist.text
print(rank[:2].strip(), title.strip(), artist.strip())
배운 내용 정리
https://daeunnniii.tistory.com/100
https://daeunnniii.tistory.com/101
회고
이전에 selenium 이나 beautifulsoup을 크롤링을 할 때 구글링으로 오픈소스를 활용해서 프로젝트를 진행한 적은 있었지만, 크롤링이 어떠한 원리로 이루어지는지 자세히 정리할 기회가 없었다. 하지만 이번 스파르타 코딩클럽 강의를 들으면서 웹 크롤링, 스크래핑이 어떻게 이루어지는지 잘 정리할 수 있었던 것 같다. 또한 웹 스크래핑 결과를 DB에 저장하는 과정까지 실습해볼 수 있어 더욱 의미있었던 것 같다. 평상시에 MySQL을 다루는 데에 더 익숙했는데, MongoDB를 활용해보면서 두 데이터베이스의 차이점을 더욱 느껴볼 수 있었던 시간이었다. 이번 기회에 SQL과 NoSQL의 차이를 잘 이해하고 넘어가야겠다.
728x90
반응형
'Web > 기타' 카테고리의 다른 글
도메인 구입하고 AWS EC2 인스턴스와 연결해서 웹 페이지 배포하기 (2) | 2021.07.27 |
---|---|
FTP 프로그램 FileZilla (파일질라) 설치 및 사용 방법 (0) | 2021.07.27 |
[스파르타 코딩클럽] 4주차 실습일지 - Flask를 이용한 API 서버 구축 (0) | 2021.07.24 |
[스파르타 코딩클럽] 2주차 실습일지 - jQuery, Ajax (0) | 2021.07.10 |
[스파르타 코딩클럽] 1주차 실습일지 - HTML, CSS, Javascript (feat. Bootstrap) (0) | 2021.06.30 |