Python! 자주 들어보던 이름이 등장한 주차라서 기대가 크기도 하지만 이제부터가 진짜 고비라는 생각이드는 주차였다.
파이썬을 이용해 웹 크롤링을 하는 방법을 알게되었다.
서버에 데이터 베이스를 만들고 파이썬을 이용해서 데이터를 입력하고 수정하거나 불러오는 방법을 살짝 배웠다.
MongoDB 계정을 만들고 어떤 형식으로 데이터가 저장되는지 살펴보았고 네이버 영화 및 지니 뮤직에서 필요한 정보만 추출해 리스트로 만드는 방법을 학습했다.
크롤링을 하기 위해서는 Requests, BeautifulSoup. 이 두개의 라이브러리가 필요하므로 잊지 말고 임포트해야한다.
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('***URL***',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
MongoDB에 접근하기 위해서는 아래와 같은 코드가 필요한데.
certifi 라이브러리와 tlsCAFile=ca 코드의 경우 기본적으로 필요하진 않지만 나의 환경에서는 정상적으로 동작하지 않아 추가한 코드이다.
자세히 조사해 보진 않았지만 보안 설정과 관련된 것으로 ‘인증서’가 키워드인 것 같다.
from pymongo import MongoClient
import certifi # 인증서와 관련된 라이브러리
# 맥 개발 환경에서 몽고디비에 접속할 수 없을때 사용하는 추가 코드
ca = certifi.where()
client = MongoClient('***application code***', tlsCAFile=ca)
db = client.dbsparta
Python으로 작성한 숙제 코드, 지니 뮤직의 21년7월 1일의 음원 차트 페이지에서 순위와 곡 이름, 가수 순서로 출력해주는 코드이다.
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?ditc=M&rtm=N&ymd=20210701',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
song_list = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for i in song_list:
title = i.select_one('td.info > a.title.ellipsis').text.replace("19금","").strip()
rank = i.select_one('td.number').text[0:2].strip()
artist = i.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
위 이미지와 같이 Peaches (Feat. Daniel Caesar & Giveon) Justin Bieber 문자열 앞에 ‘19금’ 문자열을 없애지 못해 애 먹었는데 replace() 함수를 발견했을때 너무 기뻤다.
이 함수는 절대 잊어 먹지 않을 것 같다.
아래는 위 코드를 실행한 결과이다.
1 바라만 본다 MSG워너비 (M.O.M)
2 Next Level aespa
3 신호등 이무진
4 Weekend 태연 (TAEYEON)
5 치맛바람 (Chi Mat Ba Ram) 브레이브걸스 (Brave girls)
6 Butter 방탄소년단
7 나를 아는 사람 MSG워너비 (정상동기)
8 Permission to Dance 방탄소년단
9 비 오는 날 듣기 좋은 노래 (Feat. Colde) 에픽하이 (EPIK HIGH)
10 헤픈 우연 헤이즈 (Heize)
11 하루만 더 빅마마 (Big Mama)
12 비와 당신 이무진
13 Alcohol-Free TWICE (트와이스)
14 롤린 (Rollin') 브레이브걸스 (Brave girls)
15 Peaches (Feat. Daniel Caesar & Giveon) Justin Bieber
16 Dun Dun Dance 오마이걸 (OH MY GIRL)
17 Dynamite 방탄소년단
18 라일락 아이유 (IU)
19 안녕 (Hello) 조이 (JOY)
20 추적이는 여름 비가 되어 장범준
21 운전만해 (We Ride) 브레이브걸스 (Brave girls)
22 Celebrity 아이유 (IU)
23 러브 (Prod. by 로코베리) 로꼬 & 이성경
24 Bad Habits Ed Sheeran
25 상상더하기 MSG워너비
26 ASAP STAYC (스테이씨)
27 상상더하기 라붐 (LABOUM)
28 밤이 되니까 원슈타인
29 Timeless SG워너비
30 좋아좋아 조정석
31 Savage Love (Laxed - Siren Beat) (BTS Remix) Jawsh 685 & Jason Derulo & 방탄소년단
32 다정히 내 이름을 부르면 경서예지 & 전건호
33 내 손을 잡아 아이유 (IU)
34 사이렌 Remix (Feat. UNEDUCATED KID & Paul Blanco) 호미들
35 At My Worst Pink Sweat$
36 작은 것들을 위한 시 (Boy With Luv) (Feat. Halsey) 방탄소년단
37 OHAYO MY NIGHT 디핵 (D-Hack) & PATEKO
38 가을 우체국 앞에서 김대명
39 나는 너 좋아 장범준
40 멜로디 ASH ISLAND
41 Blueming 아이유 (IU)
42 밝게 빛나는 별이 되어 비춰줄게 송이한
43 에잇 (Prod. & Feat. SUGA of BTS) 아이유 (IU)
44 2002 Anne-Marie
45 LOVE DAY (2021) (바른연애 길잡이 X 양요섭, 정은지) 양요섭 & 정은지
46 아로하 조정석
47 흔들리는 꽃들 속에서 네 샴푸향이 느껴진거야 장범준
48 이제 나만 믿어요 임영웅
49 낙하 (With 아이유) AKMU (악뮤)
50 Off My Face Justin Bieber
숙제를 성공적으로 끝마치니 기분이 좋다.
익숙하지 않은 개념들이 계속 등장하니 머리가 아프지만 약간 머리가 저릿한 이 감각은 오랜만이라 기분이 좋다.
이대로만 계속 포기하지 않고 힘내자.
'일기' 카테고리의 다른 글
Github를 이용해서 블로그 만들기 <jekyll> (0) | 2023.04.09 |
---|---|
<개발일지> -5- 웹 개발 첫걸음 (AWS에 서비스 배포하기 .whit Error) (0) | 2023.02.21 |
<개발일지> -4- 웹 개발 첫걸음 (Flask로 API 만들기) (0) | 2023.02.19 |
<개발일지> -2- 웹 개발 첫걸음 (Java Script, jQuery) (0) | 2023.02.16 |
<개발일지> -1- 웹 개발 첫걸음 (HTML, CSS) (0) | 2023.02.16 |