웹개발 종합반 - 3주차 - 마지막 지니뮤직의 1~50위 곡 스크래핑하기
2022. 10. 10. 22:40ㆍ항해99/사전 스터디
https://www.genie.co.kr/chart/top200
위 url은 아래와 같이 지니뮤직의 Top200이 표시되어 있는 웹 페이지 주소이다.!
여기서
순위, 곡명, 가수이름을 크롤링하여 정리해보자!
힌트
1) 앞에서 두 글자만 끊기! .text[0:2] 를 써보자
2) 순위와 곡제목이 깔끔하게 나오지 않는다.옆에 여백이 있다던가, 다른 글씨도 나온다던가.. 파이썬 내장 함수인 strip()에 대해 찾아보자!
정답
import requests
from bs4 import BeautifulSoup
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', headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
songs = soup.select(
'#body-content > div.newest-list > div > table > tbody > tr')
for song in songs:
song_rank = song.select_one('td.number').text[0:2].strip()
song_title = song.select_one('td.info > a.title.ellipsis').text.strip()
song_singer = song.select_one('td.info > a.artist.ellipsis').text
print(song_rank, "등", song_title, "-", song_singer)
결과물
그렇다면 이번엔 응용 버전으로
방금 크롤링한 데이터를 나의 mongoDB에 업로드해보자!
정답
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient(
'mongodb+srv://test:sparta@cluster0.cctcpnr.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', headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
songs = soup.select(
'#body-content > div.newest-list > div > table > tbody > tr')
for song in songs:
song_rank = song.select_one('td.number').text[0:2].strip()
song_title = song.select_one('td.info > a.title.ellipsis').text.strip()
song_singer = song.select_one('td.info > a.artist.ellipsis').text
song_list = {'song_rank': song_rank,
'song_title': song_title, 'song_singer': song_singer}
db.songChart.insert_one(song_list)
결과물
3주차 느낀점
크롤링을 배워보니 나중에 프로젝트를 할 때 다양한 방법으로 요긴하게 쓰일 것 같다.
앞으로도 계속 복습해보자!
'항해99 > 사전 스터디' 카테고리의 다른 글
웹개발 종합반 - 4주차 - 02. Flask 시작하기 - 서버만들기 (0) | 2022.10.11 |
---|---|
웹개발 종합반 - 4주차 - 01. 4주차 오늘 배울 것 (0) | 2022.10.11 |
웹개발 종합반 - 3주차 - 14. Quiz_웹스크래핑 결과 이용하기 (1) | 2022.10.10 |
웹개발 종합반 - 3주차 - 13. 웹스크래핑 결과 저장하기 (1) | 2022.10.10 |
웹개발 종합반 - 3주차 - 12. pymongo로 DB조작하기 (0) | 2022.10.10 |