Serial_Seller 개발일지8(게임할인정보모음사이트)

976 단어 DevlogDevlog

스팀과 유플레이, 에픽스토어는 양반이였다. 험블번들의 크롤링작업은 지옥이였다.

아직 크롤링해올 페이지가 해온것보다 많이 남은 이유로 어제도 서둘러서 험블번들의 작업을 진행하려 했다.

whole_source = ""
for page_number in range(0, 4):
    url = 'https://www.humblebundle.com/store/api/search?sort=bestselling&filter=onsale&request=2&page=' + str(page_number)
    response = requests.get(url)
    whole_source = whole_source + response.text

저번의 페이지네이션 페이지 크롤링 방법을 통해 진행하려던 중 , whole_source의 코드가 페이지의 개발자도구에서 보는 코드와 다르다는 걸 알게되었다. 처음엔 잘못봤나 싶어 세세히 비교해보았지만 절망감만 깊어질 뿐이였다.

찾아보니 이전의 작업했던 페이지, 스팀과 유플레이, 에픽스토어는 하나의 코드에 온건히 담겨있는, 그러니까 SSR의 방식으로 제공되어있는 정적페이지였고, 험블번들은 필요한 정보만을 api에서 받아 출력해주는 CSR의 방식으로 제공되는 동적페이지였다.

이것에 대한 공부를 조금 하고나서 개발자 콘솔에서 Network란을 오픈한상태로 새로고침을 하니 정말로 api를 호출하고나서야 게임목록이 드러나는걸 보고 필요한 api주소를 얻을 수 있었다.
기존의 사이트에서는

크롤링해옴 > 정보를 필요에맞게 분류 > post api 페이지로 db에 저장 > 호출용 get api 페이지 생성

이였지만, 험블의 경우에는 api가 이미 있으니 바로 db에 집어넣기만 하면 될듯 하다.

좋은 웹페이지 즐겨찾기