파이썬을 활용한 마케팅 — 웹 크롤링

WONBOK LEE
W.B's Log
Published in
2 min readAug 14, 2018

파이썬을 활용한 마케팅 두번째로 웹 크롤링이다. 배너 크롤링과 비슷하긴 한데 Http 통신에 대한 이해가 조금 필해요서 개발을 배운게 도움이 된다.

Selenium을 사용하기 전에 기본적으로 requests 모듈을 활용한 크롤링 예제를 먼저했다. 어려운 예제는 아니었지만, 내가 파이썬을 통해서 브라우저에 접속할때 내가 브라우저라는 fake_useragent 정보를 줘야 한다. 그리고 로그인 할때마다 새로운 토큰을 발급할 경우 처음 접속하기 전에는 서버로 request가 없기 때문에 한번 들어가서 토큰을 받아야한다.

with requests.Session() as s:
#URL연결 한번 get으로 연결해서 csrf토큰 받을 수 있게
#아니면 연결이 없으니 쿠키에 토큰이 없음
s.get(해당 URL)

Selenium은 주로 웹앱을 테스트하는데 이용하는 프레임워크다. webdriver라는 API를 통해 운영체제에 설치된 Chrome, firefox등의 브라우저를 제어하게 된다.

예제는 파이썬 함수를 사용하여 모듈화 네이버 카페 로그인 후 출석부 글 남기기, 회원정보 알아보기였다. 개발 관련 공부를 하면서 어려운 점은 문제가 발생했을 때 도대체 왜 안되는지와 문제 해결 후 왜 해결 된건지를 찾기 어렵다는건데 이번에도 비슷한 문제가 발생했다.

CLI로 네이버 로그인 ➔ self.driver.implicitly_wait(30) ➔ 카페접속 ➔ self.driver.implicitly_wait(30) ➔ 출석부 작성의 순서였는데

글을 작성할 해당 element를 찾을 수 없다는 에러가 자꾸 떴다. 인터넷 찾아봐도 비슷한 에러는 없는 것같아서 CLI모드 말고 직접 브라우저를 띄워서 확인해 봤다. 그러니 ID, PW입력 후 자동로그인 방지? 숫자를 입력하는게 떠서 로그인이 실패했는데 카페에 접속해서 글을 쓰려니 안써지는 거였다.
그래서 네이버 ID,PW 입력 후 로그인 버튼 클릭 전 time.sleep(3) 으로 3초 기다린 후 로그인 버튼이 클릭되게 하니 정상적으로 작동했다. 아마 네이버에서 사람이 누를 수 없는 속도로 너무 빨리 로그인 버튼을 누르면 자동로그인 방지 입력 창을 띄우는 것 같다.

추측 추측 추측 정확히 알고싶다..

어쨌든 이번 예제는 웹사이트에 회원가입이 되어있을 경우의 예제였다. 요새는 OAuth가 많기 때문에 나중에 구글이나 페이스북 로그인으로 크롤링 하는 작업도 해보고 싶다.

--

--