빅엑셀(BigExcel.KR) : 엑셀 업무 자동화, 마케팅 관리, 빅데이터 분석, 시각화 and more...

Tip1-1 엑셀 파워쿼리로 책 정보(웹페이지) 가져오기 1 본문

유용한 팁 모음

Tip1-1 엑셀 파워쿼리로 책 정보(웹페이지) 가져오기 1

BIGEXCEL 2016. 10. 31. 09:05

[목표]

1. 수집 대상 목록을 파워쿼리로 가져오기

2. 상품번호로 수집 대상의 웹 페이지 열기


다음 내용으로 넘어가기 전에... 

많은 분들이 궁금해하시고, 질문해주신 웹페이지 내용 수집(크롤링) 기초를 소개해드리고자 합니다.


웹페이지의 내용을 가져오기 위해서는 보다 전문적인 언어(Python, R, Php, Java 등)를 이용하시는 것이 편리하지만, 엑셀의 파워쿼리를 통해서도 기본적인 내용을 가져올 수 있습니다.


[크롤링 할 때 주의하실 점]

1. 크롤링은 다른 회사의 지적재산권을 수집하는 것이 될 수도 있기 때문에, 상대 회사의 robots.txt나 컨텐츠에 대한 수집 거부 정책을 확인하신 후 수집하시는 것이 좋습니다.(해당 사이트 '도메인/robots.txt' 에서 확인)

2. 동시에 너무 많은 요청(Query)을 하시면 해킹으로 오해받을 가능성도 있고, 수집이 차단될 수 있습니다.

3. 얼마전 경쟁사의 취업정보를 크롤링하여 자기 회사의 컨텐츠인 것 처럼 게시하여 문제가 된 사례가 있습니다. 크롤링 컨텐츠를 상업적으로 이용하실 경우에는 사이트 운영자의 허가를 받는 것이 좋습니다.


* 아래 yes24의 사례는 특별한 수집 거부 표시를 찾지 못하여 사례로 삼았습니다. 혹시 문제의 소지가 있다면 알려주시기 바랍니다.(단, 재접속 시간을 3초로 제한하고 있습니다.)


실습 사례로는 

1. 우리나라 온라인 서점 1위인 Yes24의 베스트셀러 내용을 엑셀로 가져온 후 

2. 여기에 포함되지 않은 책의 발간일과 판매지수를 추가로 웹페이지에서 수집하는 작업을 진행해보겠습니다.


1. 수집 대상 목록을 파워쿼리로 가져오기


- Yes24.com에 접속 > 상단 메뉴 중 베스트셀러 클릭 > 좌메뉴에서 국내도서 클릭 > 좌메뉴에서 IT 모바일 클릭을 하면

아래 그림처럼 IT 모바일 분야에 대한 베스트 셀러 목록이 나타납니다. 

이 화면에서 오른쪽 위에 있는 '엑셀' 버튼을 클릭하면 해당 베스트셀러 목록을 다운로드 할 수 있습니다.



다운로드받은 파일을 열면 아래 화면처럼 경고문구가 뜨는데요.

이런 경고가 뜨는 이유는 다운받은 파일이 확장자이름은 xls이지만, 실제 내용은 html형태를 가지고 있기 때문입니다.

(이를 확인해보시려면 다운받은 xls파일을 메모장같은 텍스트 편집기에서 열어 보시면 됩니다.)


즉, 실제 파일은 html이지만 xls확장자를 갖고 있는 것입니다. 따라서, 이 파일을 파워쿼리에서 불러오면 정상적으로 열리지 않습니다.


이 문제를 해결하기 위해 아래 그림처럼 

- xls확장자의 파일을 엑셀에서 연 다음, 다른이름으로 저장하기를 선택하여 xlsx파일로 저장하겠습니다.

(이 과정에서 기존의 html이 진짜 엑셀로 변환됩니다.)



다운받은 파일을 xlsx형태로 잘 저장하셨다면 'IT+모바일_YES베스트.xlsx'라는 파일이 생성되었을겁니다.

D드라이브에 Download라는 폴더를 하나 만드신 후 이 파일을 여기에 옮겨둡니다.

(글의 진행상 편의를 위함이고, 실제 작업하실 때는 이를 변경하실 수 있습니다. 단, 파워쿼리의 경로를 함께 변경해주셔야 합니다.)


D:\Download경로에 IT+모바일_YES베스트.xlsx가 있음을 확인하신 후...

작업폴더에 작업파일을 생성합니다.

(저는 etc01웹파싱01.xlsx라고 이름을 지었으나, 자유롭게 지으셔도 상관없습니다.

즉, 소스파일은 D:\Download\IT+모바일_YES베스트.xlsx 로 지정되었지만, 이 소스파일을 가져오는 파일은 이름이나 경로를 자유롭게 정하셔도 됩니다.)


이제 작업파일에서 베스트셀러 목록이 있는 소스파일을 파워쿼리를 통해 가져오겠습니다.

- 상단 메뉴 파워쿼리 > 파일에서 > Excel에서 클릭



아래 화면처럼 탐색 창이 보이면 '편집'버튼을 클릭합니다.



바꿔야될 필요가 있는 내용을 바꿔주고,



데이터 형식을 목적에 맞게 바꿔줍니다. 여기서, 책 세부정보를 가져올 때 '상품번호'를 사용할 것인데요. 이 데이터는 숫자형태이지만, 실제로는 계산을 하는 숫자로서의 역할보다, 상품을 나타내는 특정한 고유값으로 사용되기 때문에 '상품번호'를 '텍스트'형태로 변환해둡니다. 



필요한 변환을 완료했다면 

- 파일 > 닫기 및 로드를 클릭하여 베스트셀러 목록을 엑셀로 가져옵니다.




2. 상품번호로 수집 대상의 웹 페이지 열기


개별 책 정보를 찾아가기 위해서 '상분번호'정보를 사용합니다.



각각의 책 정보는 아래와 같은 패턴을 가지고 있습니다. 

http://www.yes24.com/24/good/상품번호


따라서 상품번호만 가지고 있으면 책 정보 페이지에 접근할 수 있습니다.

이 글을 작성할 당시의 1위 베스트셀러인 인크립션(상품번호 : 32439157)이란 책의 상세 정보를 살펴보겠습니다.

위 패턴의 상품번호 부분에다, 베스트셀러 목록에서 가져온 상품번호를 입력하면 해당 페이지를 열 수 있습니다.


http://www.yes24.com/24/good/32439157을 주소창에 입력하면 아래와 같은 책 정보를 확인하실 수 있습니다.




이번 글에서는 베스트셀러 목록을 가져오고 약간의 변환 과정을 거친 후,

개별 책의 상세 정보를 가져올 수 있는 상품번호를 수집하고,

이 상품번호로 상세정보 페이지를 접속하는 것까지 진행해 보았습니다.


다음 글에서는 상세 정보 페이지에서 발간일을 추출하여 엑셀로 가져오는 작업을 진행하겠습니다.


[사례 실습 파일]

IT 모바일_YES베스트.xlsx



감사합니다.