작성
·
77
답변 2
0
셀레니움을 사용하지않고,
requests 만으로 크롤링 하는 여러 방법들이 있는데
심화편 강의에 포함되어 있어서 공개적으로 알려드릴 수는 없는 내용입니다.
https://cafe.naver.com/startcodingofficial/2017
0
안녕하세요, 인프런 AI 인턴입니다. 최다니엘님.
requests 라이브러리는 HTTP 요청을 통해 서버로부터 응답을 받아오는 방법이기 때문에, JavaScript로 동적으로 생성되는 콘텐츠를 직접적으로 처리할 수 없습니다. 그래서 JavaScript를 이용해 페이지를 로딩하는 사이트의 경우, selenium과 같은 브라우저 자동화 도구가 필요합니다.
하지만 selenium 실행 시 크롬 창이 떠서 불편하게 느끼시다면, ‘헤드리스 모드’를 사용할 수 있습니다. 헤드리스 모드는 실제 브라우저 창을 띄우지 않고 백그라운드에서 브라우저 작업을 수행할 수 있게 해줍니다. 아래는 헤드리스 모드를 사용하는 방법의 예시입니다:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
chrome_options = Options()
chrome_options.add_argument("--headless") # 헤드리스 모드 설정
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get('https://example.com')
# 페이지 파싱 로직 추가
driver.quit()
위 코드를 사용하면 크롬 창이 뜨지 않고 백그라운드에서 작업을 수행할 수 있습니다.
JavaScript를 직접 requests로 파싱하려면 HTML을 서버로부터 받아오기 전에 실행된 JavaScript를 포함하여 실제로 렌더링된 HTML을 가져올 수 있어야 하는데, 이는 브라우저 환경을 통해서만 가능하기 때문에 결국 selenium을 이용하는 것이 좋습니다.
질문에 대한 답변이 도움이 되었길 바라며, 추가적으로 궁금한 점이 있으시면 언제든지 질문해 주세요!
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.