14. Python Selenium으로 브라우저 자동화하기 — 동적 웹 페이지 크롤링 완벽 가이드
처음에는 requests와 BeautifulSoup 조합만으로도 웬만한 페이지는 다 긁어올 수 있어서 크롤링이 정말 쉽다고 생각했어요. 그러다 어느 날, 평소처럼 코드를 돌렸는데 아무리 해도 빈 화면이나 에러 메시지만 출력되더라고요. 브라우저 창에는 뻔히 보이는 데이터가 왜 안 가져와지나 한참을 헤맸죠. 알고 보니 그 사이트가 리액트로 전면 개편되면서 데이터를 JavaScript로 동적 로딩하게 바뀐 거였습니다. 서버에서 받아온 초기 HTML에는 정말로 아무것도 없었던 거죠. 그때 처음으로 화면을 직접 제어해야겠다는 필요성을 느끼고 Selenium을 공부하기 시작했습니다. 이 글에서는 Selenium이 정확히 어떤 상황에서 필요한지, 설치와 기본 설정 방법, 브라우저를 코드로 제어하는 핵심 명령어, 그리고 실전 자동화 예제까지 단계별로 안내해 드리겠습니다. Selenium이 필요한 이유 — requests가 못 하는 것 이전 글에서 배운 requests + BeautifulSoup 조합은 서버가 HTML을 통째로 내려주는 정적 페이지 에서는 잘 동작합니다. 하지만 현대 웹사이트의 상당수는 다릅니다. 페이지를 열면 처음엔 빈 화면이었다가, JavaScript가 실행되면서 데이터가 채워지는 방식입니다. 로그인 후에만 보이는 페이지, 스크롤을 내려야 나타나는 콘텐츠, 버튼을 클릭해야 펼쳐지는 메뉴 — 이 모든 것이 requests 로는 가져올 수 없습니다. HTML을 요청하는 순간엔 아직 데이터가 없기 때문입니다. 비유하자면 이렇습니다. requests 는 식당에 전화로 메뉴판을 팩스로 보내달라 고 요청하는 것입니다. Selenium은 직접 식당에 찾아가서 자리에 앉고, 메뉴를 펼치고, 음식을 주문하는 것 입니다. 실제 손님처럼 브라우저를 조작하기 때문에 JavaScript가 실행된 이후의 완성된 페이지를 그대로 가져올 수 있습니다. Selenium이 적합한 상황 로그인이 필요한 페이지의 데이터 수집 JavaScript로 동...