크롤링으로 고객조사하자 - 플레이스토어 유저 리뷰 가져오기 (1)
👩💻 프로젝트(?) 목적
-
관심있는 회사의 서비스(유사 서비스)의 VOC를 효율적으로 수집하고 싶다.
-
일일 리뷰 살펴보고 엑셀에 복붙해서 핵심 내용 정리하는데 쓰이는 시간이 아깝다.
📋 프로젝트(?) 개요
-
일시 : 2020.11.18
-
플젝 참여자 : 양주임(제자), 고주임(튜터)
-
학습목표 : 아래 이미지의 보라색 네모 박스 안의 리뷰(텍스트)를 가져온다
📝 관련 개념 및 이론
-
정적 페이지
-
요청을 한 번만 때림(동기, Sync)
-
서버에 요청을 보내고 서버 측 응답이 올 때까지 다음 코드를 실행하지 않고 무작정 기다림(동기)
-
크롤링이 쉽다, 한번만 때리면 나오는 결과를 대상으로 크롤링 하면 됨
-
-
동적 페이지
-
요청을 여러번 때림(비동기, Async)
-
다른 것을 처리하면서 서버 측 응답이 왔다는 소식을 브라우저에 의해 이벤트롤 받음(비동기)
-
크롤링이 어렵다
-
➕ 추가조사
www.notion.so/75258d1a53ef418abf10980d6e64ab16
🖥️ Python
-
파이썬 버전 체크 : win R -> cmd 입력 -> python --version
-
안정화된 버전은 lts 라는 네임드가 붙음, 이렇게 명명된 버전이 별로 없음
-
고주임님 의견으로는 3.6 ~ 3.7 사이가 파이썬 버전 중 안정된 버전
-
-
package 개념
-
예를들어 부트스트랩의 파일을 다운받아서 코드에 적용시키는 방식이 패키지 방식, 패키지 설치라고 함
-
비교 : 부트스트랩을 cdn 방식으로 하면 코드를 복붙하는 것과 다름
-
왜 패키지 방식과 cdn 방식이 구분되어 있는거지?
-
자기에게 맞는 환경을 구축할 수 있음
-
버전 관리 가능
-
그룹의 규칙
-
cdn은 자동으로 업데이트 되어버림
-
-
코드 수정 가능
-
그러므로 지속가능한 서비스를 위해서는 cdn 방식을 지양해야 한다고 얘기도 있음
-
-
-
-
파이썬 설치 폴더 > 사이트 패키지 폴더에 설치
-
반대로 파이썬 설치 파일을 직접 다운로드 받아서 빌드 시키는 방식도 있음
-
패키지 방식만 있는 것이 아니다!
-
-
-
라이브러리
-
빌트인 라이브러리 : 기본적으로 내장
-
크롤링을 하는데 필요한 라이브러리가 있음. 처음부터 그 기능을 구현하는 것은 비효율적 -> 빌트인 라이브러리에 크롤링 관련 기능이 없으면 패키지를 사용해야 함
-
-
유저 라이브러리 : 언어 안에서 사용자가 정의한 기능
* LTS : 파이썬에 붙는 단어가 아니라 프레임워크나 언어에 모두 통용되는 언어
** 빌드 : 뭔가 개발환경에 대해 이거쓰고, 저거쓰고 그러면 관리를 다로 해줘야 함. 어떤 한 프레임워크 내에 차근차근 쌓아서 서로 맞물리게 돌린다라는 개념, 환경구축이라고 생각하면 됨
*** 빌드의 예 : APM(apache, php, mysql)
**** 패키지와 라이브러리는 코드 보면서 이해하는게 더 빠르다.
➕ 추가조사
파이썬에는 빌트인 모듈의 방대한 라이브러리가 있다(전자제품에 배터리를 끼워 파는 것에 비유해 batteries included라고 표현한다). 게다가 서드 파티 모듈도 아주 많다. 파이썬 패키지 인덱스(Python Package Index, PyPi)를 둘러보라. 아니면 특정 주제를 구글에서 검색해도 된다.
🖥️ IDE
1) Pycharm
프로페셔널 에디션 말고 커뮤니티 에디션 다운로드
2) Sublime text
3) Spider
🖥️ 파이썬 문법
1. 변수선언
2. 반복문
3. 자료형
🖥️ 크롤링에 관한 라이브러리
-
빌트인
-
urllib : 어려워서 안 쓰는 것을 추천
-
-
패키지
-
requests, BeautifulSoup, selenium
-
셋 다 따로 설치해야 함
- 여기서 셀레늄은 웹 브라우저의 드라이버에 접속해 제어 할 수 있게 하는 라이브러리
-
-
설치 코드 : pip install 패키지명
-
pip install requests
-
pip install bs4
-
pip install selenium
-
-
사용 난이도는 적힌 순서대로,,
-
* 환경설정에서 시간 많이 잡아먹음(나 이거 모르겠어,,,😂)
🖥️ 실제 코드
플레이스토어 리뷰 페이지에서 한 유저의 리뷰(텍스트)만을 가져옴
# 파이썬 실행 alt shift f10
import requests
# url이란 변수 문자열
url = "https://play.google.com/store/apps/details?id=com.rainist.banksalad2&showAllReviews=true"
#http 요청 방식은 get, post가 많이 쓰임
r = requests.get(url)
# 요청 때린 값을 반환, 파이썬 실행 => 실행 결과 이게 바로 크롤링을 해야 하는 대상
# print(r.text)
# 지금까지의 이 과정이 정적인 것, 스크롤 내리면서 로딩하고 새로 뜨는 리뷰를
# 정적인 것을 동적으로 바꿔야함, 이 때 셀레늄 사용
# 셀레늄은 웹 드라이버를 사용해야 함. 따로 exe 파일을 받아줘야야. 크롬 웹 드라이버 설치. 이 드라이버 파일을 프로젝트 파일과 같은 파일에 둬야
# 웹 드라이버를 사용하겠다는 선언
from selenium import webdriver
from time import sleep
#html parsing
from bs4 import BeautifulSoup
# 웹 드라이버 중 크롬 드라이버 사용 설정
driver = webdriver.Chrome("./chromedriver.exe")
#실행한 브라우저로 뱅크샐러드에 있는 url 접속
driver.get(url)
# 접속한 페이지에서 html 내용 가져오기
html = driver.page_source
# html find
soup = BeautifulSoup(html,"html.parser")
# find comment
comment = soup.find("span",{"jsname":"bN97Pc"}).text
sleep(3)
print(comment)
# 10초동안 드라이버가 안꺼지고 대기
sleep(10)
# 클로즈 해주는 이유 -> 창이 열려 있으면 메모리를 계속 잡아 먹음
driver.close()
💬 파이참 설치 중 사담
-
언어별 대표 캐릭터
-
파이썬은 뱀 그래서 아나콘다
-
github은 문어고양이,,,?
-
-
개발자 스티커 추천 #개발자굿즈샵
-
구구너드
-
허니커즈
-
📌 오늘 등장한 개념들
#정적페이지 #동적페이지 #동기 #비동기 #빌드 #LTS #패키지 #라이브러리 #빌트인라이브러리 #유저라이브러리 #파이썬 #Python #파이썬자료형 #Python_list #Python_dict #Python_set #파이썬반복문 #파이썬변수선언 #파이썬객체 #웹드라이버 #http #http_get #http_post #Docs_String