728x90
반응형
값은 들어있는데 아무리 출력을 해도 node.js 에서는 console 이 터미널에 찍히지 않았다.
왜일까?
궁금하던 중, 다음의 사실을 알게되었다.

page.evaluate() 안의 코드는 브라우저 컨텍스트에서 실행되므로, 브라우저의 개발자 도구 콘솔에는 출력되지만 Node.js 터미널에는 보이지 않습니다.
- claude 의 대답-
해결방법>
page 객체 생성 이후, 다음의 코드를 넣어서 터미널에도 출력되게 한다.

파이썬과 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
'Tech Notes' 카테고리의 다른 글
| Cursor AI 코드 에디터 완전 가이드 (4) | 2025.08.01 |
|---|---|
| [Cursor] Please use Claude without thinking or use Chat 에러 (0) | 2025.08.01 |
| React 의 단방향 흐름에 대해서 (0) | 2025.07.21 |
| React + Express (0) | 2025.07.21 |
| gcloud 꼬였을 때 해결법 (1) | 2025.07.15 |