개발일지 3회차

이태성·2022년 2월 3일
0

개발일지

목록 보기
3/3

서론

오늘은 파이썬문법, 크롤링, 데이터베이스조작하기를 배웠다.
파이썬 문법은 기존에 이미 알고있기때문에 빠르게 스킵하면서 넘겼고 크롤링도 경험이 있어서
쉽게 이해하면서 배워나갔으며 지니뮤직에 있는 음악들을 크롤링하는 것으로 진행하였다. 데이터베이스 조작하는건 mongo DB를 파이썬 라이브러리 중 하나인 pymongo를 활용해서 DB에 있는 데이터를 find, delete, update 하는 것들을 해보았다.

본론

먼저 파이썬 문법은 별 언급할 것이 없기에 생략하도록 하고, 크롤링에대해서 이야기해보자.
지니뮤직에 있는 랭킹50위권에 해당하는 음악들을 랭킹번호, 노래제목, 가수명 순으로 크롤링해보는게 숙제 였다.
일단 예제는 20년도 4월 3일에 기록된 음악 차트를 기준으로 진행하였다.
다음과 같이 우리가 흔히 보는 웹사이트에서 랭킹, 노래제목, 가수명을 가지고 오면 되는것이다!
하지만 크롤링에는 만만치 않은 난관들이 많이 존재 한다.
예를 들면 위와 같이 문자들이 사람이 보기 힘든 경우가 정말정말~~~ 많다!(이걸 클린징 해주어야한다!)
참고로 해당 이미지는 일부러 조작한게 아니라 실제 크롤링 모습이다...
이것을 이제 string 형식의 글자로 들어와 있는것이기 때문에 이를 파이썬 문법을 활용하여 클리닝 해주는것이다. 필자같은경우엔 이상한 공백들이 일단 보기싫어서 공백을 없애주었다.
그랬더니 한결 보기 좋아지긴 했지만 1상승, 6하강, new, 유지 >> 이러한 순위변동에대한 텍스트가 쓸대없이 보였고, 좌측에 보이는 순위와 우측에있는 노래와 가수들이 너무 크게 띄어쓰기 되어있는문제도 해결해야 했다. 이사진은 html의 태그를 캡쳐한것이다. 여기서 8번째 줄에 "상승" << 이라는 텍스트가 span이라는 태그에 속해 있는데 나같은경우엔 가장 상위계층인 첫줄에 class="number"를 가져오다보니 자식태그인 span들까지 모조리 딸려와서 순위변동이 보이는것으로 문제파악을 했다! 그래서 자식태그를 없애는 방법을 구글에서 찾아서 적용해보았다.파란색 체크표시를한 부분이 중요하다. 자식태그를 제거하는 extract()함수를 이용해서 span태그를 제거해본것이다!! 그리고 아래서 2번째 줄 코드는 중간에 있던 큰 공백을 없애는 코드이다!
그 결과 !!! 아주 아름답게 출력된것을 확인 할 수 있었다!!!
여기서 그치지 않고 이거를 데이터 베이스에 저장을 해보자!!
위에서 보여준 코드에서 mongoDB를 조작하기위한 pymongo를 3번째 줄에서 import해주었다. 그리고 아래쪽에 보면 dic = {} 이러한 부분이 있는데 DB의 컬럼명을 'rank', 'title', 'singer'로 해주고 그에대한 데이터는 New_rank_tag, title_tag,text, singer_tag.text라는 변수에서 가져오도록 하였다.
그리고 db.music.insert_one(dic)을 통하여 db > client.dbsparta(6번째줄) > music 이라는 경로에 dic을 넣어준다는 의미이다!!
여기서 dbsparta라는 곳에 insert가 된것인데 refresh를 해보자!
우리가 넣어주었던 music이라는 새로운 테이블이 생겼다 엑셀로치면 시트라고 보면된다. 저 music을 처음에 눌러보면 이런화면이 뜨는데 이때 머리속에 물음표 백만개가 찍힐수 있지만 파란색 동그라미를 눌러보자 이렇게 아름답게 db에 저장까지 해보았다!

결론

오늘 해본것이 가장 재미있으면서도 난이도가 좀 있었던거 같다. 개발자가 되려면 문제해결능력이 가장 중요하다고 해서 지니뮤직 크롤링할때 클리닝 하는과정은 거의 1시간에서 1시간반정도 구글에서 찾아가며 겨우 만들었다. 아무리 시간이 걸리더라도 이렇게 혼자 해결하는 능력을 점점 기르는게 정말 중요하다고 생각이 드는 하루였다. 이만 수고!

profile
재밌게 뚫고 나가자

0개의 댓글