다나오는 사이트를 긁어보자.1

커피같은개발·2022년 6월 23일
1

파이썬

목록 보기
1/5

나는 작고 소듕한 코린이

현재 스타트업에 다니고 있다.
아직 서비스 출시를 하지 않아서 데이터가 없다.
그래서 한동안 sql에 대한 얘기 보다 파이썬, 통계에 관한 얘기가 주된 얘기가 되지 싶다.
어떤 코딩 얘기부터 할까 고민하다가 여태 내가 연습 혹은 실무에 사용 했던 코드들을 순서대로 소개하고자한다.
"실습은 인생이다"란 말도 있지 않은가(아 거꾸론가?)
지금이 파이썬 어린이라면 파이썬 갓난아기 시절의 코드이다.

이전 포스팅에서도 말했지만 난 데이터 분석을 하고싶고, 이를 위해 데이터 수집 부터 했다.
이를 위해 먼저 시작한 건 크롤링이다.
because I have no date..,data (데이트도 없다 샹)
크롤링 사이트는 컴퓨터 사양에 대해서 다나오는 사이트 크롤링이였다.

스크롤 다운 등 동적 모션이 필요해서 requests보단 selenium로 get했다.
나는 총 6개의 모듈을 사용했다. 일단 사용한 모듈 소개하겠다.

필수 모듈

from bs4 import BeautifulSoup : 웹 제어
from selenium import webdriver : 웹 동적 제어

선택..?모듈

import chromedriver_autoinstaller : 웹드라이버 버전 별 자동 설치
import pandas as pd : 수집 된 데이터 행열 정리
from selenium.webdriver.common.by import By : 셀레니움으로 html요소 찾기
import time : 웹 제어 일시정지

모듈 상세소개

BeautifulSoup

아름다운 비누다. 크롤링을 배울 때 무조건 처음 나오는 모듈이다.
누가 만들어서 작명한건진 모르겠지만 이분도 3차원 이상일거라고 예상된다.

보통 아래처럼 쓰인다.
엄청나게 많은 이미지를 뽑고 싶다.
엄청나게 많은 기사를 크롤링 또는 스크래핑하고 싶다.
기사에 키워드가 몇개인지 보고싶다.
이렇게 웹상에서 업무를 자동화 단순 반복 그것도 아주 많은 반복이 필요하다면 뷰티풀스프를 쓰면된다.

일단 BeautifulSoup을 다루려면 아주 적게나마 html을 알아야한다
나는 다행히 한 6~7년 전에 html을 좀 배워둬서 이해하는데 어렵지 않았다.
BeautifulSoup은 기본적으로 html의 태그들을 이용해 웹 요소를 이쁘게 가져오는 모듈이다.
html이 뭔지 모른다면 알아서 알아봐라.
난 강사도 누굴 가르칠 실력도 안된다. 나도 html 2개월 배웠다;

selenium

BeautifulSoup와 기능이 거의 비슷한 모듈이다.
단 하나 차이점은 동적제어가 가능하다.
사이트들이 웹 용량, 속도 때문에 한페이지에 많은 콘텐츠를 담지 않고, 스크롤을 조금 내리면 새로운 콘텐츠가 나오고 내리면 또나오고 이런 페이지가 많다.(뭔지 느낌오지?)
이런 페이지의 정보를 가져오려면 자동으로 스크롤을 하는 기능이 필요하다.
이럴 때 쓰는게 바로 셀레니움이다.
스크롤 말고도 웹페이지에서 사람 처럼 움직여야 할 때가 많다.
클릭, 뒤로가기 등...
개인적으로 난 뷰티풀스푸보다 셀레니움을 많이 쓴다.

chromedriver_autoinstaller

셀레니움으로 웹 동적제어를 하려면 드라이버를 설치해야한다.
(정확히는 웹 제어가 아니라 크롬 브라우저 제어다. 클릭, 스크롤 뭐 이런거)
그냥 셀레니움 모듈의 webdriver로 크롬 드라이버를 설치해도 된다.
굳이 이 모듈을 쓰는 이유는 크롬 제어를 위해선 버전에 맞게 드라이버를 설치해야하는데,
그 버전을 조회하고 다시 설치하는 것도 귀찮다!
(부지런해야 큰 사람이 될 수 있다던데 난 큰사람이 될 수 없나보다.)

상위버전이 나와도 알아서 크롬 드라이버를 설치해줘서 난 거의 필수로 사용하는 모듈이다.

pandas

파이썬을 마치 엑셀 처럼 행(열) 데이터로 변환시켜주는 모듈이다.
크롤링하는데 이게 왜 필요해?
필요 없다!
단순히 글이나 사진 뽑아 오는데 엑셀 같은 기능이 왜 필요한가?
필요 없다!
대신 어떤 정보를 이쁘게 행과 열로 착착 쌓고 싶다면 판다스 만한게 없다.
난 다나오는 사이트 안에 제.품.정.보를 가져 오기 때문에 판다스를 사용한 것 뿐!
그냥 글 뽑고, 사진 뽑고 이런데는 필요 없다.
Q. 혹시 상상력이 좋은 편인가?
A. 아니요!
그럼 상상해보자.

빈 엑셀 시트가 있고, 거기에 사람 이름이라는 행 옆으로 이름, 나이, 취미 등으로 나열 된 모습을..
얼마나 깔끔한가?

By

진짜 레알 필요 없는 건데 난 이제 타성처럼 쓰는거다.
진짜 레알 필요 없으니까 글 읽기 싫으면 넘어가도 된다.
그냥 조삼 모사 모듈이다.
예를 들어 내가 어떤 글을 가져오고 싶다고 하자.
근데 드래그 복붙 하면 되지만 굳이 파이썬으로 뽑아 오고 싶다고 하자.
변태시키야.

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC
위키에서 파이썬을 검색했다.
개발자도구(F12)를 누르고 보니 div class="dablink hatnote"
에 내용들이 있다.
이 내용들을 변태처럼 굳이 파이썬의 셀레니움 모듈로 뽑으려면
find_elements_by_class_name이라는 명령어로 반복해서 불러오면 된다.
find_elements_by_class_name("dablink.hatnote") << 요렇게
근데 요 커몬 바이 모듈을 쓰면 find_elements(By.CLASS_NAME, "dablink.hatnote") 이렇게 바뀐다.
사용 전 : find_elements_by_class_name("dablink.hatnote")
사용 후 : find_elements(By.CLASS_NAME, "dablink.hatnote")
그냥 by부터가 괄호안으로 들어간다고 보면 된다.
뭐야 굳이 왜 이렇게 쓰나요?
응 구지 난 쓴다 어쩔래

time

이건 뭐랄까 진짜 레알 필요 없다고 말하기엔 필요가 있고, 그렇다고 막 필요 없진 않고 그렇다.
거의 필수에 가까운 선택 모듈이다.
뭐 모듈 이름 보면 알겠지? 시간을 다루는 함수다.
데이터를 다루는 모든 언어는 시간 함수가 정말 중요하다.
하지만 지금은 크롤링이니까.
여기서 그냥 웹제어 일시중지기능 정도로만 쓰고 있다.
왜 중지 하냐고? 브라우저 창 열리는 속도 보다 코드 돌아가는 속도가 빠르면 오류난다.
특히 나 처럼 똥컴은 오류가 잘난다.

모듈을 하나의 토픽으로 소개할 맘은 없었는데;
모듈 이하부터 첫 줄 부터 하나씩 말하려고 했는데 아놔...

설마 이 글도 끝까지 읽은 변태들 없겠지?
다 읽었음 썩꺼져

profile
개마케터로써의 삶

1개의 댓글

comment-user-thumbnail
2022년 6월 27일

이만 꺼지겠습니다. 총총총... 핡

답글 달기