크롤링(왜 5번 이후로는 안되지...)

Sang Jun Lee·2020년 8월 17일
0

필리, 클래스101 두 사이트는 위코드에서 1,2차 프로젝트를 진행한 사이트이다. 필리는 리뷰보기 페이지가 무한스크롤 방식으로 되어있고 클래스101은 거의 모든 페이지가 무한스크롤 방식으로 되어있다.

보통 이런 경우에 바로 크롤링을 하여 자료를 가져오게 되면 5~10번 아이템 이후로는 못 가져오게 된다. 처음에는 뭐가 문제지 하며 고민도 하고 찾아보게 되었는데 이게 사이트가 무한스크롤 방식으로 되어 있어 스크롤을 내리면 사이트가 반응하여 추가 정보를 가져오는 식이다. 내가 원하는 자료를 얻기 위해서는 페이지를 내려주는 것까지 크롤링 하는 파일에 넣어주어야 한다.

SCROLL_PAUSE_TIME = 2
for u in range(1,25):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(SCROLL_PAUSE_TIME)

필리 리뷰보기 페이지는 프론트엔드에서 300개의 아이템을 요청하였고 스크롤을 내릴때 마다 15개씩 호출하였기에 넉넉히 25번 스크롤을 화면 가장 아래로 내려갈 수 있게 하였다. 이렇게 불러놓고 크롤링을 하게 되면 원하는 자료를 가져올 수 있다.

y = 100
SCROLL_PAUSE_TIME = 1
for u in range(1,40):
    driver.execute_script(f"window.scrollTo(0, window.scrollY+{y})")
    y += 30
    time.sleep(SCROLL_PAUSE_TIME)

클래스101 강의의 상세페이지내의 정보를 가져오긴 위해 위와 같이 스크롤을 내려주었다. 필리때와 다르게 그냥 화면밑으로 스크롤을 내렸더니 자료를 가져오지 않고 그냥 지나치는 경우가 발생했다. 그래서 좀 더 섬세하고 간격을 조정하고 화면이 불러들여질 시간까지 고려하여야 원하는 정보를 가져올 수 있었다.

무한 스크롤이 적용되어 있는 사이트에서는 참고하여 원하는 자료 잘 가져와 활용하면 되겠다.

profile
Live now and Dream better tomorrow

0개의 댓글