Python Selenium을 이용해 웹브라우저의 백그라운드 요청 가져오기
Posted In: 미분류
Python을 이용해 데이터를 크롤링할 때 많이 쓰는 것 중에 하나가 Selenium입니다. Selenium을 이용하면 Chrome이나 Firefox를 코드상에서 실행하고 사용자 동작을 코드로 구현하여 사용자의 행동을 그대로 따라하도록 할 수 있습니다.
요즘은 Ajax나 Websocket을 이용해 백그라운드에서 요청을 하는 것이 많습니다. 가끔 그런 요청에서 넘어오는 데이터가 필요한 경우가 있는데 아쉽게도 Selenium에서는 백그라운드 요청내용을 가져오는 메소드가 없습니다.
Selenium-wire를 사용하면 Slenium의 기능을 그대로 사용하면서 백그라운드 요청 내용을 받아올 수 있습니다.
from seleniumwire import webdriver # Import from seleniumwire # Create a new instance of the Firefox driver driver = webdriver.Firefox() # Go to the Google home page driver.get('https://www.google.com') # Access requests via the `requests` attribute for request in driver.requests: if request.response: print( request.url, request.response.status_code, request.response.headers['Content-Type'] )
위 코드는 Selenium-wire에서 제공하는 예제이며 기존 크롤링 코드에서 import하는 부분만 from seleniumwire import webdriver
로 변경 후, driver.requests
에서 받아오실 수 있습니다.