728x90
728x90
Selenium을 이용해 화면을 캡처해서 컴퓨터에 저장하는 것을 해볼 예정이다. 그냥 코드만 써두면 기억에 남지 않을 것 같아 간단한 실습을 통해서 진행할 것이다.
서울역 근처 버거킹 위치사진을 캡쳐해보자..왜냐,,,난 지금 버거킹을 먹고 싶걸랑
1. 필요한 라이브러리 로드
# 라이브러리
from selenium import webdriver # webdriver모듈 사용
from selenium.webdriver.chrome.service import Service # 웹 드라이버의 서비스 관련 기능을 포함하는 모듈
from selenium.webdriver.common.by import By # 웹 요소를 찾는 데 사용되는 선택자를 정의하는 클래스
from selenium.webdriver.common.keys import Keys # 키보드 관련 클래스
import os # 운영체제와 상호작용
2. 크롤링 동작과정
먼저 네이버 지도 페이지에 들어가서 검색창 요소를 찾아야 한다. 이 과정에서
여러 class
이름을 넣어서 본 결과 input_search
클래스가 검색창에 검색어를 입력해야 되는 것을 알았다. 다시 보니 ipnut
태그가 있었구나 ,,
2.1 기본경로 지정 및 세팅
# 크롬 웹드라이버 실행 경로
path = 'chromedriver.exe'
# 크롤링할 주소
target_url = "https://map.naver.com/v5/"
# 크롬 드라이버 사용
service = Service(executable_path=path)
options = webdriver.ChromeOptions()
driver = webdriver.Chrome()
# 주소 이동
driver.get(target_url)
# 로딩 대기
driver.implicitly_wait(2)
# 검색창 요소 찾기
search_bar =driver.find_element(By.CLASS_NAME, 'input_search') # 검색창
# 검색어 설정
search = '서울역 버거킹'
search_bar.send_keys(search) # 검색어 입력
search_bar.send_keys(Keys.ENTER) # 엔터 키 입력으로 검색 실행
처음에 .click()을 사용했으나 오류가 떠서 구글링 해 본 결과 Keys.ENTER
사용하면 된다해서 코드를 바꾸었다.
해당 정보는 아래 링크에서 확인해 볼 수 있습니다.
브라우저 창을 최대화로 만들어 주고
# 브라우저 창 최대화
driver.maximize_window()
2.2 스크린샷
이번 포스팅에서도 하고자 한 스크린샷을 찍어주었다.
# 지도 캔버스 요소 찾기
capture = driver.find_element(By.CLASS_NAME,'mapboxgl-canvas-container')
# 지도 캔버스 스크린샷
capture_png = capture.screenshot_as_png
# 스크린샷 저장
image_path = os.path.join(search+'.png')
driver.save_screenshot(image_path)
capture_png
변수에는 지도 캔버스가 저장되어있는데 이를 screenshot_as_png
함수를 이용해서 PNG 형식의 image로 만들어준다.
이를 os
라이브러리와 save_screnshot
통해서 내 컴퓨터에 저장해주었다.
2.3 저장된 사진
3. 후기
상품 사진이나 다른 이미지를 캡쳐하려고 구글링하면서 찾아봤는데 딱히 쓸모가 없을 것 같은 느낌이 ...언젠가는 쓰이겠지~(긍power정)
그리고 네이버 지도 왜캐 복잡한건지?..? 다음에는 식당별 주소랑 전화번호 등을 크롤링 해서 csv파일에 저장해봐야겠다.
그럼 끝!
728x90
728x90
'Programming > Web Crowling' 카테고리의 다른 글
[Python] Selenium을 이용한 네이버 뉴스 크롤링 (0) | 2023.08.06 |
---|