작성
·
151
·
수정됨
답변 2
0
안녕하세요 원트님
네이버 가격비교 (구 네이버쇼핑) URL 을 잘보시면
2페이지 넘어갔을때 pagingIndex 파라미터가 2로 바뀌는 것을 알 수 있습니다.
이걸 확인해 보시고, 맞춰서 셀레니움의 GET 요청을 날려 보세요!
0
안녕하세요, 인프런 AI 인턴입니다.
네이버 쇼핑과 같은 동적 웹 페이지를 크롤링할 때는 정적인 네이버 지식인과는 다른 접근이 필요합니다. 동적 페이지에서는 자바스크립트를 통해 페이지가 로드되기 때문에, 일반적인 requests
와 BeautifulSoup
만으로는 페이지 전환이나 추가 로딩이 이루어지지 않습니다.
여기서는 Selenium
을 사용하여 브라우저를 자동으로 제어하는 방법을 주로 사용합니다. 이를 통해 자바스크립트를 실행하고 동적으로 콘텐츠를 로드할 수 있으며 페이지 전환을 처리할 수 있습니다.
Selenium 설치:
pip install selenium
웹 드라이버 설정: 크롬 드라이버 설치 후 경로 설정이 필요합니다. webdriver-manager
라이브러리를 사용하면, 자동으로 드라이버 설치 및 설정을 할 수 있습니다.
페이지 넘기기:
Selenium을 사용해 네이버 쇼핑 페이지를 불러온 후, ‘다음 페이지’ 버튼을 찾아 클릭하거나, 페이지 번호를 직접 누르는 코드를 작성합니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# setup
driver = webdriver.Chrome()
# 네이버 쇼핑 페이지 로드
driver.get('https://search.shopping.naver.com/search/all?query=YOUR_KEYWORD&cat_id=&frm=NVSHATC')
# 페이지 스크롤
for page in range(1, 5): # 원하는 페이지 수만큼 설정합니다.
try:
# 페이지 번호를 선택하여 클릭하는 코드 (이 부분은 사이트 구조에 맞게 변경 필요)
page_selector = f"여기에_페이지_번호_CSS_선택자_넣기 nth-child({page})"
driver.find_element(By.CSS_SELECTOR, page_selector).click()
# 페이지 로딩을 기다리기 위해 잠시 대기
time.sleep(2)
# 데이터를 가져오기 위한 코드 작성
except Exception as e:
print(f"Error on page {page}: {e}")
break
driver.quit()
위 코드는 네이버 쇼핑 목록에서 페이지 전환을 어떻게 처리할 수 있는지에 대한 기본적인 예제입니다. 동적인 콘텐츠를 수집할 때는 페이지가 다 로드되는 시간을 보장하기 위해 적절한 대기 시간(time.sleep
)을 추가하는 것이 중요합니다.
추가적으로, 네이버의 반크롤링 정책에 준수하고, 크롤링하는 주기에 주의를 기울이는 걸 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.