David의 개발 이야기!

웹 크롤러 이해하기[2] - 무한 스크롤 해결하기! 본문

크롤링 공부

웹 크롤러 이해하기[2] - 무한 스크롤 해결하기!

david.kim2028 2023. 5. 2. 17:34
반응형

크롤링을 하려다가 보면, 페이지가 넘어가야하는 부분들을 처리해야 할 때가 있다.

 

크게 두가지 종류로 나눌 수 있는데,

 

1. 페이지 넘버로 구분되어있을때

2. 스크롤을 계속해서 로딩을 계속 해주어야할때

 

로 나뉜다.

 

1. 페이지넘버로 구분되어있을때의 크롤링 방식

1번같은 예시는, 쿠팡처럼 쇼핑몰 같은데에서 잘 구현되어있다.

1번 같은 경우는 

 

https://www.coupang.com/np/search?q=%EC%82%AC%EA%B3%BC&channel=user&component=&eventCategory=SRP&trcid=&traid=&sorter=scoreDesc&minPrice=&maxPrice=&priceRange=&filterType=&listSize=36&filter=&isPriceRange=false&brand=&offerCondition=&rating=0&page=2&rocketAll=false&searchIndexingToken=1=9&backgroundColor= 

 

위처럼 URL 을 잘 보면, page=2/3/4/5/6 이렇게 바뀌는 것을 확인할 수 있다.

(현재는 page=2 인데, 나머지 그대로 두고, page=3 으로 하면, 다음 페이지를 불러온다)

 

따라서, 1번 같이 잘 구현되어있는 경우에는, 지난 포스팅때처럼 코드를 구현해 크롤링 하면 된다.

for 문으로 페이지 넘버를 증가하는 식으로..!!!

 

[기본 크롤링 코드 구현 ]

2023.05.02 - [크롤링 공부] - 웹 크롤러 개념 익히기[1] - 네이버 주식 현재가 크롤링 예제

 

웹 크롤러 개념 익히기[1] - 네이버 주식 현재가 크롤링 예제

데이터마이닝 수업을 수강하며, 크롤링의 필요성을 다시 한번 느끼게 되어, 정리겸 공부할겸 포스팅을 하게 되었다. 인공지능수업이나, 데이터분석 수업을 수강하는 대학생이라면, 아마도, 데

david-kim2028.tistory.com

 

2. 스크롤을 계속해서 로딩을 계속 해주어야할때

문제는 2번인데, 네이버 view 탭 처럼, 페이지 넘버가 있는 게 아니라, 밑으로 계속 내려줘야 다음 포스팅을 띄워준다.

기존에 코드처럼 구현을 하면, 상위 몇개까지만 크롤링이 되고, 그 이후의 것들은 크롤링이 안되는 문제가 생긴다. 

 

이럴때에는 마찬가지로 규칙을 잘 찾아야한다.

구글 크롬 개발자콘솔 > 네크워크 창의 띄워서 확인해보면,

 

이런 화면이 뜨는데, 맨 오른쪽 "차단된 쿠키 있음"을 설정해제 해준다.

 

그럼 해당 화면에서 불러와지는 것들이 리스트에 뜨는데,

밑으로 내릴때 로딩이 되는 포스팅 제목을 검색한다.

 

 필자의 경우, 비네이처스 단어가 있는 포스팅이 내렸을때 로딩되었다.

검색을 하고, 헤더에 들어가면, 요청 URL 이 있다.

 

https://s.search.naver.com/p/review/search.naver?rev=44&where=view&api_type=11&start=61&query=%EC%82%AC%EA%B3%BC&nso=&nqx_theme=%7B%22theme%22%3A%7B%22main%22%3A%7B%22name%22%3A%22food_ingredient%22%7D%7D%7D&main_q=&mode=normal&q_material=&ac=0&aq=0&spq=0&st_coll=&topic_r_cat=&nx_search_query=&nx_and_query=&nx_sub_query=&prank=62&sm=tab_jum&ssc=tab.view.view&ngn_country=KR&lgl_rcode=09260106&fgn_region=&fgn_city=&lgl_lat=37.605882&lgl_long=127.099538&abt=&_callback=viewMoreContents 

 

URL 을 자세히 보면, 1번 때와 마찬가지로, start=61 이 부분이 계속 바뀌는걸 확인할 수 있다. (밑으로 내려서 로딩할때마다 start=숫자 가 30개씩 증가함 -> 30개씩 로딩한다는 의미)

 

따라서, 뒷 부분은 지난 포스팅과 같이 start 부분의 숫자를 증가시키면서 크롤링하면 해결할 수 있다.

 

간혹, 요청 URL 이 짧게 나오는 경우가 있는데, 다른 포스팅을 검색해서 요청 URL 을 분석해보자!

 

다음에는, JSON 에 대해 알아보자

2023.06.11 - [크롤링 공부] - 웹 크롤러 이해하기[3] - 코인원 사이트 분석 및 JSON 파일 이해하기

 

웹 크롤러 이해하기[3] - 코인원 사이트 분석 및 JSON 파일 이해하기

코인원 사이트에서, 그래프에 있는 종가 혹은, 주가 정보를 가져오고 싶다면 어떻게 해야할까? 우선 크롬 개발자도구 > 네트워크 탭에 들어간다. 그 후, 주가창을 이리저리 옮겼을때 네트워크 탭

david-kim2028.tistory.com

 

반응형
Comments