상세 컨텐츠

본문 제목

파이썬: 다음 뉴스 스크래핑 스크롤 하기

ChatGPT 와 파이썬

by 마리우치 2023. 8. 27. 18:25

본문

반응형

오늘은 파이썬과 자바스크립트를 함께 사용하여 다음 뉴스 페이지의 맨 아래까지 스크롤하는 방법에 대해 알아보겠습니다. Selenium과 time 모듈을 사용하여 웹 브라우저를 제어하고, 페이지 스크롤을 내리는 동작을 반복합니다.

 

 

다음 뉴스 스크래핑 스크롤 하기
다음 뉴스 스크래핑 스크롤 하기

 

 

파이썬에서 자바스크립트 사용하기

파이썬에서 자바스크립트를 사용하는 방법에는 여러 가지가 있습니다. 다음은 파이썬에서 자바스크립트를 실행하는 몇 가지 일반적인 방법입니다:  Selenium 라이브러리: Selenium은 웹 애플리케이션 테스팅을 위한 도구로, 자동화된 웹 브라우저를 제어할 수 있는 기능을 제공합니다. 이를 사용하여 파이썬에서 자바스크립트 코드를 실행하고 웹 페이지의 동적인 요소에 접근할 수 있습니다.  execjs 라이브러리: execjs는 파이썬에서 자바스크립트 코드를 실행하기 위한 라이브러리입니다. 이를 사용하면 파이썬에서 자바스크립트 엔진을 호출하여 코드를 실행할 수 있습니다.  PyV8 라이브러리: PyV8는 파이썬에서 Google V8 자바스크립트 엔진을 사용할 수 있게 해주는 라이브러리입니다. 이를 통해 자바스크립트 코드를 실행하고 결과를 파이썬으로 가져올 수 있습니다.  Node.js와의 통합: Node.js는 서버 측 자바스크립트 실행 환경으로, 파이썬과 Node.js를 통합하여 자바스크립트 코드를 실행할 수 있습니다. 파이썬에서 Node.js 스크립트를 호출하거나 서로 통신하여 자바스크립트 코드를 실행하는 방식으로 사용할 수 있습니다.  이 외에도 웹 브라우저 제어 라이브러리인 Puppeteer, Pyppeteer 등을 사용하여 파이썬에서 자바스크립트를 실행할 수도 있습니다. 선택한 방법은 사용 환경과 목적에 따라 달라질 수 있습니다.

 

이제 파이썬으로 다음 뉴스 페이지에 접속하여, 자바스크립트를 이용해서 아래로 스크롤하는 코드를 개발해보겠습니다.  파이썬 코드는 Selenium과 time 모듈을 사용하여 웹 브라우저를 제어하고, 주어진 URL로 이동한 후 페이지 스크롤을 내리는 동작을 반복합니다. 스크롤을 내리는 동안 적절한 대기 시간을 설정하여 페이지가 로딩되도록 하고, 스크롤 위치를 조금씩 이동시키면서 페이지의 맨 아래까지 도달합니다. 

 

 

다음 뉴스를 스크롤하기-파이썬
다음 뉴스를 스크롤하기-파이썬

 

 

다음 뉴스 스크래핑 스크롤 하기 파이썬 코드 설명

주어진 코드는 Daum 뉴스 사이트에서 페이지 스크롤을 내리는 작업을 수행하는 코드입니다. 코드의 구성과 주요 기능은 다음과 같습니다:  Selenium과 time 모듈을 import합니다.  driver_path 변수에 사용할 Chrome 드라이버의 경로를 설정합니다.  Chrome 드라이버를 이용하여 웹 브라우저를 엽니다.  url 변수에 접속할 웹 페이지 주소인 "https://news.daum.net/"를 설정합니다.  driver.get(url)을 통해 해당 주소로 이동합니다.  페이지 로딩을 위해 1.5초 대기합니다.  page_height 변수에 현재 페이지의 전체 높이를 가져옵니다.  scroll_height 변수에 전체 스크롤 높이를 저장합니다.  반복문을 통해 페이지의 맨 아래까지 스크롤을 내리는 작업을 수행합니다. 스크롤을 내리면서 0.3초씩 대기하고, 스크롤 위치를 current_scroll_height 변수에 저장하여 조금씩 스크롤을 내려갑니다. 이 과정은 스크롤이 전체 높이에 도달할 때까지 반복됩니다.  추가적인 페이지 로딩을 위해 1.5초 대기합니다.  결과 출력 또는 추가 작업을 수행하는 부분은 주어지지 않았습니다.  driver.quit()을 호출하여 웹 브라우저를 닫습니다.  

 

 

daum_news_scroll.py
0.00MB

소스를 다운로드하려면, 위의 첨부파일을 클릭하세요.



from selenium import webdriver
import time

# Chrome 드라이버 경로 설정
driver_path = "e:\\python\\chromedriver.exe"

# Chrome 드라이버로 웹 브라우저 열기
driver = webdriver.Chrome(driver_path)

# 사이트 접속
driver.get(url)

# 전체 페이지 로딩을 위해 추가적인 대기 시간 설정
time.sleep(1.5)

# 페이지의 높이 가져오기
page_height = driver.execute_script("return document.body.scrollHeight")

# 맨 아래까지 스크롤 (느리게)
scroll_height = driver.execute_script("return document.body.scrollHeight")
current_scroll_height = 0

while current_scroll_height < scroll_height:
    driver.execute_script("window.scrollTo(0, {});".format(current_scroll_height))
    time.sleep(0.3)  # 0.3초 대기
    current_scroll_height += 200

# 전체 페이지 로딩을 위해 추가적인 대기 시간 설정
time.sleep(1.5)

# 결과 출력 또는 추가 작업 수행
# ...

# 웹 브라우저 닫기
driver.quit()


 

 

 

 

window.scrollTo()

window.scrollTo()는 JavaScript에서 사용되는 메서드로, 웹 페이지에서 스크롤을 조작하는 데 사용됩니다. 이 메서드를 사용하면 웹 페이지의 가로 및 세로 스크롤 위치를 지정할 수 있습니다.  window.scrollTo() 메서드는 두 개의 매개변수를 받습니다. 첫 번째 매개변수는 스크롤할 가로 위치를 나타내며, 두 번째 매개변수는 스크롤할 세로 위치를 나타냅니다. 예를 들어, window.scrollTo(0, 500)은 페이지의 가로 위치는 그대로 두고 세로 위치를 500px로 이동시킵니다.  주로 사용되는 경우는 페이지 내 특정 위치로 스크롤을 이동하거나, 페이지의 맨 위 또는 맨 아래로 스크롤하는 데 활용됩니다. 스크롤 위치는 픽셀 단위로 지정되며, 원하는 위치로 스크롤하기 위해 값을 조정할 수 있습니다.  위의 코드에서는 window.scrollTo(0, current_scroll_height)을 사용하여 세로 위치를 조정하여 페이지를 스크롤합니다. current_scroll_height 변수는 스크롤이 진행될 때마다 증가하여 페이지의 맨 아래까지 도달할 때까지 스크롤을 반복합니다.

 

 

time.sleep(1.5)

time.sleep(1.5)은 파이썬에서 프로그램의 실행을 일시적으로 지연시키는 함수입니다. 이 함수는 주어진 시간(여기서는 1.5초) 동안 프로그램을 중지시킵니다. 일반적으로 프로그램의 실행 속도를 조절하거나 작업 간의 시간 간격을 만들기 위해 사용됩니다. time.sleep() 함수는 CPU 자원을 사용하지 않으며, 대기 시간이 경과하면 다음 코드가 실행됩니다. 이를 위해 time 모듈을 임포트하여 사용합니다.

 

 

결론

파이썬과 자바스크립트를 함께 사용하여 다음 뉴스 페이지의 맨 아래까지 스크롤하는 방법을 알아보았습니다.  Selenium과 time 모듈을 사용하여 웹 브라우저를 제어하고, 페이지 스크롤을 내리는 동작을 반복하여 페이지의 모든 콘텐츠를 수집할 수 있습니다. 

 

 

 

반응형

지금 뜨고 있는 이야기들

10월 알뜰폰 요금제 추천 Top 5

챗GPT 한국어 설정, 챗GPT 한글 사용법

챗GPT 무료 와 챗GPT 유료 차이점과 GPT-4 무료 사용법

챗GPT 어플, 안드로이드 앱 설치와 사용법, GPT-4o 음성 대화, 무료 사용법

GPT-5와 의료 분야, AI의 역할 재정립

AI 기반 검색 엔진, ChatGPT의 SearchGPT와 구글의 비교

챗GPT로 하루 100통 이메일 자동 작성하는 비법 공개

경제 지표 시계열 분석을 통한 정책 제언, 파이썬을 활용한 GDP 성장률 예측과 그 활용법


챗GPT GPT-4o 무료로 그림 그리기



관련글 더보기

댓글 영역