[Python] Selenium 크롤링 할 때, 현재 창에서 크롤링하는 방법(Debugging Mode)



1. 문제

Python을 사용하여 크롤링을 할 때 Selenium 을 많이 사용합니다. 이 때, 매 번 새로운 브라우저를 띄우는 과정이 필요하게 됩니다. 원하는 크롤링에서 로그인이 필요하면, 코드에서 새로 로그인하는 과정이 많이 필요하며 로그인 할 때 봇을 감지하기 위한 인증 문자 입력이나 추가적으로 MFA 와 같은 2차 인증이 필요할 수 있습니다. 로그인이 많으면 해당 서버에서 접속이 막힐 수도 있고, 생각보다 코드 작성이 다소 복잡해집니다.

이 때, 현재 사용 중인 브라우저에서 크롤링을 시도한다면 이러한 문제를 손쉽게 해결할 수 있을 것입니다. 사용중인 창에서 바로 크롤링 하는 방법은 무엇일까요?

2. 해결법

이 문제의 해결법은 바로 Selenium Debugging Mode 를 사용하는 것입니다. 주로 9222 port 를 사용하며 아래와 같은 명령어를 사용하여 Windows 와 Mac 에서 각각 Debugging Mode 는 아래와 같이 실행할 수 있습니다.

2.1. Windows 에서 사용법

Windows 에서는 아래의 코드를 사용하여 9222 port에 Chrome 실행할 수 있습니다.

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:/ChromeTEMP"

C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:/ChromeTEMP"

2.2. Mac 에서 사용법

Mac 에서는 아래의 코드를 사용하여 9222 port에 Chrome 실행할 수 있습니다.

$ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="~/ChromeProfile"

2.3. Python 코드

위의 코드를 사용하면 브라우저가 실행되었을 것입니다. 그 때, 해당 브라우저에 미리 필요한 로그인을 해줍니다. 그 이후 Debugging Mode 가 수행된 Browser 를 실행하면 아래와 같은 python 코드를 사용하여 현재 브라우저에서 로그인이 되어 있는 것을 확인할 수 있습니다.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "드라이버 경로"
# 드라이버 경로에 아래의 값을 입력해줍니다
# Windows
# - C:\Program Files\Google\Chrome\Application\chrome.exe 
# - C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
# Mac
# /Applications/Google\ Chrome.app/Contents/MacOS/Google
driver = webdriver.Chrome(chrome_driver, options=chrome_options)

driver.get('크롤링 하기 위한 url')

위의 코드를 잘 사용하여 크롤링에 도움이 되셨으면 좋겠습니다!