본문 바로가기
[Python & Ruby]

Python 크롤링 - 2 / 네이버 메인 홈페이지 크롤링 예시

by Hevton 2022. 11. 18.
반응형

 

구글 Colab 기반 환경에서 실습을 진행했다.

 

 

구글 Colab은 내 컴퓨터가 아닌 클라우드 컴퓨터에서 동작하는 방식이므로,

Selenium을 사용할 시 웹브라우저가 하나 뜨는게 보여지지 않는다.

그래도 결과적으로 크롤링은 할 수 있다.

 

 

우선 Selenium과 크롬 드라이버를 다운로드해주고, 경로를 조정해준다.

#이 부분은 처음 한번만 실행하면 됌.
!pip install selenium
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

 

우리가 이번에 실습으로 가져올 데이터는

여기 로그인 박스 아래 네모박스 영역이다. 이 부분은 계속해서 실시간으로 스와이핑되면서 데이터가 바뀌게 된다.

그러므로 실행 결과도 계속 다양한 데이터를 가져오게 될 것이다.

 

이 부분을 어떻게 구하느냐?

 

크롬을 켜서 네이버에 접속한 뒤, 개발자 도구를 켠다.

 

그리고 마우스 트래킹 기능을 사용해서 저 부분에 마우스를 올려서 클릭하거나, 또는 해당 태그를 직접 코드에서 찾은 다음

 

코드에서 마우스 오른쪽 버튼 -> copy -> Copy selector 를 이용해서 css 값을 copy해준다.

 

참고로 마우스 트래킹 기능은 이 사진의 맨 왼쪽 위 버튼이다

 

# -*- coding: UTF-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
 
#Colab에선 웹브라우저 창이 뜨지 않으므로 별도 설정한다.
 
options = webdriver.ChromeOptions()
options.add_argument('--headless')        # Head-less 설정
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver', options=options)
 
#해당 url로 이동
url = "https://www.naver.com/" 
driver.get(url)
 
update = driver.find_element(By.CSS_SELECTOR, '#NM_TS_ROLLING_WRAP > div > div')
print(update.text)

 

그리고 driver.find_element(By.CSS_SELECTOR, '여기')

에다가 넣어주면 끝난다.

 

말했듯 시간이 지나면서 자꾸 스와이핑 되는 부분이므로, 실행할 때 마다 출력값이 계속 바뀌는 것을 확인할 수 있다.

 

다른 부분을 크롤링 하고 싶으면, 또 다른 태그를 찾아서 해당 태그로 바꿔주기만 하면 끝이다.

 

 

참고

https://www.youtube.com/watch?v=sySrQ6k7zbc&t=195s 

https://pgh268400.tistory.com/286

 

 

반응형