Post List

2018년 5월 18일 금요일

구글 스프레드시트에서 크롤링 하는법




굳이 프로그래밍을 하지 않아도
구글 스프레드시트에서 매우 편리하게
크롤링 기능을 사용할 수 있습니다.



먼저 comp.fnguide.com 에 접속하여
사이트 주소가 어떻게 구성되어 있는지 확인해봅니다.

재무제표 탭을 클릭하여 봅니다.




가운데 6자리 종목코드만 변경하면 되도록
링크가 구성되어 있습니다.

http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&gicode=A005930&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701

따라서 향후에 종목코드만 변경되면
크롤링 정보가 알아서 변경되도록 구성합니다.

B2 셀에 티커를 입력한 후,
링크의 앞과 뒤 문자열을 CONCATENATE 함수를 이용해
합쳐주도록 합니다.


=CONCATENATE("http://comp.fnguide.com/SVO2/asp/SVD_Finance.asp?pGB=1&gicode=A",종목코드,"&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701)")


005930 처럼 앞에 0을 입력할 경우 
0이 삭제되어 5930 으로 강제 변경이 됩니다.

이럴 경우 문자열 앞에 ' 을 입력하거나
서식 → 숫자 → 일반 텍스트
셀의 형식을 변경해주면 해결이 됩니다.








이번에는 가지고 오고자 하는 데이터의 Xpath를 확인해야 합니다.
예시로 매출액의 전년동기(%) 를 따오도록 합니다.
(어떤 데이터든지 가능합니다.)

가지고 오고자 하는 데이터에서 우클릭을 한후
검사를 눌러주도록 합니다.






크롬의 개발자도구 창이 열립니다.

개발자도구 코드들을 위아래로 움직이면
이에 해당하는 홈페이지 데이터가 무엇인지
왼쪽화면에서 해당 색깔이 변경되면서 확인이 가능합니다.

원하는 지점에 마우스를 댄 뒤
우클릭 → Copy → Copy Xpath를 클릭합니다.





스프레드시트에 붙여넣기를 하면
해당 숫자의 Xpath가 붙여넣어 집니다.

//*[@id="divSonikY"]/table/tbody/tr[1]/td[6]

다른 글자에서 동일하게 Xpath를 추출하면
다른 주소가 복사됩니다.





추출한 링크와 Xpath만 있으면 importxml 함수를 이용하여
해당 데이터를 스프레드시트로 끌고 올 수 있습니다.


=importxml(url, Xpath)

를 입력하면
해당 url의 Xpath 값 데이터를 가져옵니다.





이번에는 하나의 값이 아닌
테이블을 통째로 긁어오도록 하겠습니다.

테이블 끝 즈음에 마우스를 댄 후
역시나 우클릭 → 검사 를 통해
개발자 모드로 넘어갑니다.

적당히 위아래로 마우스를 옮기다 보면,
테이블 전체가 선택되는 지점이 있습니다.

해당 지점에서
우클릭 → Copy → Copy Xpath를 클릭합니다.






//*[@id="compBody"]/div[2]/div[2]/div[4]

가 선택됩니다.

미세한 위치 차이에 따라

//*[@id="divSonikY"]
//*[@id="divSonikY"]/table

가 복사되기도 하는데
어짜피 결과는 동일합니다.




위와 동일하게 importxml에 xpath를 변경하여 입력해 봅니다.





분명 크롤링이 되기는 되는데
문제가 발생합니다.

테이블 형식이 유지가 되지 않고,
글자를 통째로 긁어와 버립니다.




해당 문제를 해결하기 위해서
importhtml 함수를 사용합니다.

imortxml이 해당 url 중 특정 데이터를 가져오는데 편리하다면
importhtml은 url 중 테이블 째로 가져오기 편리한 함수입니다.


=importhtml(url, "table", 숫자) 를 통해
원하는 테이블을 긁어올 수 있습니다.

숫자는 1부터 계속 바꾸어가면
url 내 각각 다른 테이블이 불러와 집니다.






url 내 첫번째 테이블인 포괄손익 계산서 항목이
테이블 형태로 잘 긁어와지는게 보입니다.





이번에는 두번째 테이블을 긁어오기 위해 숫자를 2로 바꾸어 봅니다.
동일한 포괄손익 계산서에서 분기 기준 데이터가 불러와집니다.





3을 입력해 봅니다.
페이지에서 아래에 위치하는 재무상태표 테이블이
잘 불러와집니다.





4를 입력해 봅니다.
역시나 분기기준 재무상태표 테이블이 불러와 집니다.






5와 6을 입력하면 연간과 분기기준 현금흐름표가 불러와 집니다.






이번에는 종목 티커만 바꿔보도록 하겠습니다.
005930에서 068270 으로 변경하면

Link 가 자동으로 바뀌어
해당 종목의 재무데이터를 읽어오게 됩니다.



댓글 2개:

  1. 신기하네요. 컴퓨터 바보인데 자세히 설명해 주셔서 고맙습니다. Xpath 두 개를 붙여넣은 이유는 무엇인가요?

    답글삭제