본문 바로가기

내일배움단-웹개발 종합반

221020 3주 차 개발일지

DB & 파이썬 크롤링

 

데이터 베이스의 개념을 배우고 MongoDB와 파이썬을 활용해서 데이터를 직접 저장해봤다.

아래의 코드 상위3줄을 기본적으로 가져오고 sparta자리에 비밀번호를 치면된다.

파이참에서는 컨트롤+시프트+F10이 실행인데 컨트롤을 빼고실행하면 다른파일도 같이실행되는 것 같다.

하나씩 조심히 실행해야할 것 같다. 단축키 사용하다가 30분넘게 날려먹었다..

from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.mkcquq1.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta

# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})

파이썬은 조금 사용할 줄 알기때문에 쉽게 진도를 뺐다. 강의를 들으면서 웹크롤링을 공부하니까 훨씬 편했다.

아무것도 모르는상태로 독학하면서 했던 크롤링은 어려웠는데 생각보다 쉬웠던거같다.

 

나는 셀레니움으로 크롤링 했었는데 이번에는 Beautifulsoup으로 진행했다.

원하는 정보를 가져오는게 경로전체를 복사해와서 조금더 편했던것 같다.

개인적으로 셀레니움은 소수의 정보를 다루는데 좋을것 같고, Beautifulsoup는 대량의 정보를 저장하는데 좋을것 같다. 

 

아래의 코드는 Beautifulsoup 로 크롤링한 일정기간 지니 TOP50 순위,곡,아티스트 정보다

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')

gens = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

for gen in gens:
    num = gen.select_one('td.number').text[0:2].rstrip()
    title = gen.select_one('td.info > a.title.ellipsis').text.strip()
    singer = gen.select_one('td.info > a.artist.ellipsis').text.strip()
    print(num, title, singer)

 

아래처럼 잘 나오는 것을 볼 수 있다.

 

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

'내일배움단-웹개발 종합반' 카테고리의 다른 글

221021 4주 차 개발일지  (0) 2022.10.21
221019 2주 차 개발일지  (0) 2022.10.19
221019 1주 차 개발일지  (0) 2022.10.19