회사 업무 중 구글 플레이에 있는 앱 정보를 정리할 일이 있었다. 앱의 제목, 카테고리, 개발사 명, 다운로드 수 정보를 일일이 복붙해 구글 시트에 입력했다. 복붙을 여러 번 반복하다 보니 슬슬 지겨워졌다. 지겨움을 극복하기 위해 구글 시트의 IMPORTXML 함수를 사용해 스토어 정보를 긁어왔다.
인터넷에 공개되어있는 정보를 한 두 개 복사하는 것은 복붙으로 충분하지만, 10개, 50개, 100개가 넘어가면 자동화가 필요하다. 자동화라고 해서 꼭 코딩을 할 줄 알아야 하는 것은 아니다. 구글 시트로도 충분히 가능하다. 구글 플레이와 앱스토어에 있는 정보를 가져오는 예시를 통해 함께 살펴보자.
스토어 페이지 정보를 긁어오기 위해서는 IMPORTXML 함수를 사용하면 된다.
=IMPORTXML(url, xpath_query)
이 간단한 공식에 url 값과 xpath_query 값만 넣어주면 된다. 그럼 여기에 넣을 값은 어떻게 찾아야 할까? 일단 url 부분부터 살펴보자.
url은 스토어 페이지의 주소다. 구글 플레이 홈페이지로 가서 ‘카카오톡’을 검색해 눌러보자. 그럼 카카오톡의 구글 플레이 url은 "https://play.google.com/store/apps/details?id=com.kakao.talk&hl=ko"인 것을 알 수 있다. 이걸 그대로 복사하면 된다. 문자 값이니 양끝에 큰 따옴표를 붙이는 것을 잊지 말자.
다음은 xpath_query다. xpath_query는 해당 페이지에서 원하는 정보가 어디에 위치하는지를 나타내 주는 코드다. 만약 카카오톡의 카테고리 정보가 필요하다면, 스토어 페이지에서 카테고리 텍스트의 xpath_query 값이 필요하다.
xpath_query 값을 찾는 법은 간단하다. 구글 크롬에서 해당 부분을 오른쪽 클릭 후 검사(Inspect) 모드 > 요소(Elements)에서 관련 태그와 클래스를 찾으면 된다.
예를 들어 카카오톡의 제목에 해당하는 xpath_query 값은 "//h1"이다. 제목 말고 "//h1"을 쓰는 곳이 없으므로 클래스 값은 굳이 넣지 않아도 된다.
카테고리 정보의 xpath_query 값은 "//a[@itemprop='genre']"이다. "//a" 태그는 다른 정보에서도 쓰이므로 "[@itemprop='genre']"까지 넣어줘야 오류가 나지 않는다.
설명만 잔뜩 늘어놨으니 헷갈릴 수 있다. 이제 직접 구글 시트로 가 IMPORTXML 함수에 url과 xpath_query 값을 넣고 돌려보자.
=IMPORTXML("https://play.google.com/store/apps/details?id=com.kakao.talk&hl=ko", "//h1")
결과 : 카카오톡 KakaoTalk
=IMPORTXML("https://play.google.com/store/apps/details?id=com.kakao.talk&hl=ko", "//a[@itemprop='genre']")
결과 : 커뮤니케이션
축하한다. 이제 당신은 간단한 함수 하나로 인터넷 정보를 긁어올 수 있는 능력을 얻었다! url값을 위키피디아 같은 다른 웹사이트로 변경하고, 거기서 원하는 정보의 xpath_query값을 몇 번 찾다 보면 감이 올 것이다.
예시가 구글 플레이뿐이라 실망한 애플 팬이 있을 수 있다. 앱스토어 정보도 같은 방법으로 접근하면 된다. 페이지 구성이 살짝 다르므로 xpath_query값만 잘 찾으면 된다. 제목은 구글 플레이와 똑같이 "//h1"이지만, 카테고리 값은 다르게 입력해주어야 한다.
=IMPORTXML("https://apps.apple.com/kr/app/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-kakaotalk/id362057947", "//h1")
결과 : 카카오톡 KakaoTalk
=IMPORTXML("https://apps.apple.com/kr/app/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-kakaotalk/id362057947", "//dd/a/text()")
결과 : 소셜 네트워킹
위에서 알아본 제목이나 카테고리 말고 다운로드 수 정보를 가져오고 싶을 수 있다. 다운로드 수의 xpath_query를 찾아 돌려보자. 예상했던 것과 살짝 다른 정보가 나온다.
=IMPORTXML("https://play.google.com/store/apps/details?id=com.kakao.talk&hl=ko", "//span[@class='htlgb']")
결과: (아래 리스트)
우리가 원하는 다운로드 수 정보(100,000,000+)가 포함되어 있지만 필요 없는 다른 정보도 줄줄이 딸려 나온다. 이 때는 앞에 INDEX 함수를 붙이면 된다. 여러 줄의 정보에서 n번째 줄만 출력되도록 하는 것이다.
=INDEX(IMPORTXML("https://play.google.com/store/apps/details?id=com.kakao.talk&hl=ko", "//span[@class='htlgb']"), 5)
결과 : 100,000,000+
다룬 내용을 간단히 정리해보자.
1. IMPORTXML 함수를 사용하면 웹 페이지 내용을 손쉽게 긁어올 수 있다.
2. IMPORTXML 함수 안에 페이지 url과 xpath_query 값을 넣으면 페이지 내 특정 정보를 가져올 수 있다.
3. 가져온 정보에 필요 없는 내용이 딸려올 경우, INDEX 함수로 원하는 부분만 출력되도록 할 수 있다.
*본 내용은 요즘IT와 함께 작성한 글입니다.