티스토리 뷰
토이 프로젝트를 위해서 구글맵으로 크롤링을 하려는데 크게 세 가지 문제가 발생했다.
셀레니움을 사용하는 예제를 참고해봤지만 대부분 예전 글이라 수정할 수 없었다.
1. 코랩이 크롬 드라이버의 경로를 인식하지 못함.
드라이버 실행파일을 로컬에도 놔둬 보고 코랩에도 올려보았으나 해결되지 않음.
2. 창이 안 뜸.
셀레니움 다운그레이드로 1을 해결해도
3. css 식별자 탐색 메소드가 만료되었다는 메시지가 뜸.
DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
문제상황 크롬 드라이버의 설치 경로를 찾지 못함, 크롬 창이 열리지 않음, .find_element_by_css_selector 메소드만료 메시지
시도한 것 셀레니움 다운그레이드
이렇게 해결 headless 옵션 설정, selenium webdriver 라이브러리 설치(By 포함)
1. 구글 코랩에서 셀레니움을 사용할 때의 기본 세팅
먼저 크롬 드라이버의 경로를 설정하고 셀레니움을 설치한다.
#chrome driver의 경로를 설정
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-broser/chromedrive /usr/bin
#selenium 설치(버전 고정 필요하지 않음)
!pip install selenium
from selenium import webdriver
#안정적인 로드를 위해 시간 지연을 주고자 한다면
import time
2. 구글 코랩에서의 크롬드라이버 작동은 headless 모드
알고 보니 구글 코랩에서 크롬 드라이버로 크롬을 작동하면 원래 화면이 뜨지 않는다고 함.
(다음과 같이 headless 옵션을 주어야 한다)
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
이제 다음 코드로 실행할 수 있다.
driver = webdriver.Chrome('chromedriver', options = options)
(+ 추가: 아래는 각자 필요한 대로 바꿀 수 있는 부분!)
driver.maximize_window() #최대 창으로 키우기
driver.implicitly_wait(3) #3초 대기
driver.get("https://map.naver.com/v5/search") #원하는 url로 접속
#메모리 낭비를 방지하기 위해 창을 제때 끕시다
driver.quit()
3. find_element_by_css_selector 메소드 대신 By.CSS_SELECTOR를 쓰자
element의 유형에 따라 메소드를 따로 쓸 필요가 없고 속성으로 붙여 깔끔하다.
또 홀라당 까먹을 나를 위해서 아래에 속성을 모두 적어보았다.
from selenium.webdriver.common.by import By
driver.find_element(By.ID, 'id')
driver.find_element(By.XPATH, 'xpath')
driver.find_element(By.LINK_TEXT, 'link text')
driver.find_element(By.PARTIAL_LINK_TEXT, 'partial link text')
driver.find_element(By.NAME, 'name')
driver.find_element(By.TAG_NAME, 'tag name')
driver.find_element(By.CLASS_NAME, 'class name')
driver.find_element(By.CSS_SELECTOR, 'css selector')
#여러 개를 탐색할 때는 element -> elements로 변경
이 정도로 하면 기본적인 준비는 끝난 것 같은데,
과연 무사히 크롤링을 해볼 수 있을까?
'공부 > Data Science' 카테고리의 다른 글
TIL: What is 'data annotation'? (0) | 2022.06.28 |
---|---|
데이터 사이언티스트/데이터 분석가 커리어를 위해서 무엇부터 준비해야 할까? & 필수 기술! (0) | 2022.06.10 |
DBeaver로 PostgreSQL 연결하고 .csv 데이터 업로드하기(feat.ElephantSQL, python) (0) | 2022.06.03 |
Object Detection: YOLO(1) (0) | 2022.02.10 |
28회 ADsP: 국가공인 데이터분석 준전문가에 합격했다! (0) | 2021.04.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 인공지능
- 개발자포트폴리오
- 자격증
- 커리어코칭
- 데이터준전문가
- 데이터과학
- ADsP합격후기
- 코테공부
- Kaggle
- 코드스테이츠
- 깃허브
- 빅분기후기
- Til
- data annotation
- Notion2Tistory
- 이력서
- 취업준비
- 이자포스터디
- googlecolab
- 빅분기합격
- 자버
- 빅데이터분석기사
- 빅분기
- 데이터분석
- 데이터준전문가합격후기
- ai부트캠프
- todayIlearned
- ADsP
- 빅데이터
- github
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함