본문 바로가기
Tech Notes

파이썬 (Selenium) vs JavaScript (Puppeteer) 차이점

by miracle-tech 2025. 7. 23.
728x90
반응형

값은 들어있는데 아무리 출력을 해도 node.js 에서는 console 이 터미널에 찍히지 않았다.

왜일까? 

궁금하던 중, 다음의 사실을 알게되었다.

node.js 소스

 

page.evaluate() 안의 코드는 브라우저 컨텍스트에서 실행되므로, 브라우저의 개발자 도구 콘솔에는 출력되지만 Node.js 터미널에는 보이지 않습니다.

- claude 의 대답- 

 

해결방법>

page 객체 생성 이후, 다음의 코드를 넣어서 터미널에도 출력되게 한다.

nodejs 에서 page 객체 내의 console 을 터미널에도 찍도록.

 

파이썬과 JavaScript(Node.js)에서 웹 스크래핑할 때 console 동작이 다릅니다.

파이썬 (Selenium) vs JavaScript (Puppeteer) 차이점

파이썬 - Selenium

 
 
python
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# execute_script로 실행한 console.log가 Python 콘솔에 바로 출력됨
result = driver.execute_script("""
    console.log('이것이 Python 콘솔에 보임!');
    return document.querySelectorAll('div').length;
""")
print(result)  # 결과값만 받음

JavaScript - Puppeteer

 
 
javascript
const puppeteer = require('puppeteer');

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');

// page.evaluate 안의 console.log는 Node.js 콘솔에 안 보임!
const result = await page.evaluate(() => {
    console.log('이것은 브라우저 콘솔에만 보임');
    return document.querySelectorAll('div').length;
});
console.log(result); // 결과값만 받음

 

왜 이런 차이가 날까?

 

파이썬 Selenium

  • 브라우저와 직접적인 연결: WebDriver가 브라우저의 console 출력을 Python으로 전달
  • 동기식 실행: execute_script가 완료될 때까지 기다리면서 모든 출력 캐치

JavaScript Puppeteer

  • 별도 컨텍스트: 브라우저 컨텍스트와 Node.js 컨텍스트가 분리됨
  • 이벤트 기반: console 출력을 받으려면 별도 리스너 설정 필요

                                                     python selenium                                                     javascript puppeteer

설치 pip install selenium + 드라이버 별도 npm install puppeteer (올인원)
브라우저 Chrome, Firefox, Safari Chrome/Chromium만
속도 상대적으로 느림 빠름
문법 동기식 (간단) 비동기식 (async/await)
console 출력 자동으로 보임 리스너 설정 필요
디버깅 브라우저 창 쉽게 띄움 headless: false 옵션

 

728x90