본문으로 바로가기

웹 데이터 수집의 기술

category 내가 쓴 책들 2017.07.14 01:10

웹 데이터 수집의 기술



웹 데이터 수집의 기술 책에 나온 소스코드 입니다.



ex02-1 엑셀 vba로 네이버 검색결과 출력하기

https://gist.github.com/Kyeongrok/fed1833139fd46a6cfb3f73524a08844


엑셀 2013 미만일 때 소스코드

https://gist.github.com/Kyeongrok/748de3a0a54812512e8d0bc9f3606426



ex03-1 구글 앱스 스크립트로 데이터 추출하기

https://gist.github.com/Kyeongrok/eba4f2d931daa04b4f3e5f21d013a89d



동영상 강의

https://www.youtube.com/playlist?list=PLAdQRRy4vtQQit2nYYCWvIPbyLOtRpR8j



Chapter01.txt

Chapter02.txt

Chapter03.txt

1
2
3
4
5
6
7
8
9
10
11
function myFunction() {
var formattedDate = Utilities.formatDate(new Date(), "KST""yyyy-MM-dd HH:mm:ss");
 
// 시트에 읽어온 데이터 출력하기
var ss = SpreadsheetApp.openByUrl(
'https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit');
var sheet1=ss.getSheetByName("Sheet1");
sheet1.getRange(1,1).setValue("실행시간");     // 실행 시간이라고 출력
sheet1.getRange(1,2).setValue(formattedDate);  // 날짜 출력
}
 
cs


Chapter04.txt

Chapter05.txt

Chapter06.txt


function myFunction() {
  // 1. 새로 만든 구글 스프레드시트의 인터넷 주소(URL)를 지정
  var url = "https://docs.google.com/spreadsheets/d/1aRz9Jp5-LH-ocqPz03CgagYFns-rOE9MLp_-fHfBHTE/edit#gid=1721336146";
  var spredSheet = SpreadsheetApp.openByUrl(url);
  
  // 2. 날짜 생성하기
  var d = new Date();
  var targetName = Utilities.formatDate( d, 'GMT', 'yyyyMMdd');
  
  // 3. 원본/대상 시트 준비
  var baseSheet = spredSheet.getSheetByName("base");
  var targetSheet = createSheet(spredSheet, targetName, 0);

  var statement = '=IMPORTXML("http://www.r114.com/z/real/m_detail.asp?only=0&m_=5&g_=&type_m=m&addr1=%BC%AD%BF%EF%C6%AF%BA%B0%BD%C3&addr2=%B0%AD%B3%B2%B1%B8&addr3=%BF%AA%BB%EF%B5%BF&type_g=A&type_cd=03%5E05%5E&mpl=15000&mph=16000&SF_PKVal=6&SF_Size=0&sort=desc&order=%B8%C5%B8%C5%B0%A1&rNumber=5791&lst=ml&mkind=30&aptcode=G01011350800030&mulcode=30BB0F25607876&housingtype=77.77&areasize=00023&sizetype=D","//*[@id=\'wrap\']/div[5]/div[3]/div[1]/div[2]/div[3]/dl[1]/dd/span")';
  // 4. ImportFeed 함수 다시 실행
  baseSheet.getRange('a1:e1').setValue("");
  
  baseSheet.getRange(1,1).setFormula(statement);
  baseSheet.getRange(1,1).copyTo(baseSheet.getRange('A2'), {contentsOnly: true});
  baseSheet.getRange(1,1).setValue("가격");
  
  // 5. 받아온 값을 시트에 출력
  // 복사 대상 범위 설정(A1:B21)
  var rangeToCopy = baseSheet.getRange('a1:d10');
  
  // 복사 시작 셀 지정(A1)
  var targetToCopy = targetSheet.getRange('A1');
  rangeToCopy.copyTo(targetToCopy);
}

function createSheet(spredSheet, sheetName, index) {
  var sheet = spredSheet.getSheetByName(sheetName);
  if (sheet == null) {
    spredSheet.insertSheet(sheetName, index);
    sheet = spredSheet.getSheetByName(sheetName);
  }
return sheet;
}

https://gist.github.com/Kyeongrok/e964758e5249a0a271821feaf0c4c5f8


'내가 쓴 책들' 카테고리의 다른 글

비전공자 직장인을 위한 파이썬 데이터 수집기 만들기  (2) 2018.03.29
Node.js 200제  (4) 2018.03.20
웹 데이터 수집의 기술  (17) 2017.07.14

댓글을 달아 주세요

  1. 한철동 2017.09.29 19:49 신고

    이북으로 구입하여 일독하였습니다~. 강의장에서 뵙겠습니다.

  2. 김성현 2017.12.05 20:34 신고

    경록김 선생님 안녕하세요? 웹데이터수집의 기술 잘 보고 있습니다. 프로그램에 대해 초보라서 궁금한 점이 있어서요.

    46페이지: 네비어의 가장 첫 페이지를 스크래핑하고 싶으면 페이지주소 = "https://www.naver.com/"으로 써줍니다.

    페이지주소 = "https://www.naver.com" & 검색어

    이렇게 바꾸니 에러가 나와서요. 어떻게 수정해야 하나요?

  3. 김성현 2017.12.05 21:04 신고

    2-2 데이터를 가지고 올 페에지 주소 지정하기 (활용)


    저는 코리아타임즈 (http://www.koreatimes.co.kr) 홈페이지에서
    오영진칼럼 (키워드: Oh Young-jin)을 스크랩핑 하고 싶어요.

    그래서 예제코드를 다음과 같이 바꾸었어요.

    검색어 = WorksheetFunction.EncodeURL("Oh Young-jin")
    페이지주소 = "http://www.koreatimes.co.kr" & 검색어

    그런데 에러가 나오네요 ㅠㅠ

    어떻게 하면 원하는 값을 구할 수 있을까요?

  4. 김성현 2017.12.06 21:52 신고

    김경록 선생님, 바쁘신데 불구하고 답장 감사합니다.

    안내해주신 유튜브를 찬찬히 보았지만 아직 솔루션을 찾지 못했습니다.

    저는 코리아타임즈 (http://www.koreatimes.co.kr) 홈페이지에서
    오영진칼럼 (키워드: Oh Young-jin)을 스크랩핑 하고 싶어요.

    그래서 예제코드를 다음과 같이 바꾸었어요.

    검색어 = WorksheetFunction.EncodeURL("Oh Young-jin")
    페이지주소 = "http://www.koreatimes.co.kr" & 검색어

    제가 올려드린 방법에서 무엇을 고쳐야 하나요?

    혹시 제가 문의 드리는 부분이 도서외에 유료로 수업을 들어야 알 수 있는 내용인지, 그렇다면 어느 수업이나 도서를 공부해야 하는지 방향을 알려주시면 감사하겠습니다.

    김성현 드림

  5. Bluefox 2017.12.08 14:18 신고

    6-4장의 쇼핑몰 리뷰 데이터 수집하기가 다른 쇼핑몰 (11번가 등등) 에서는 되질 않고 있네요ㅠㅠ 인터넷 개발자 도구 통해서 이름을 안다고 해도 코드자체가 틀리다고 나오네요ㅠㅠ

  6. 안재홍 2017.12.18 22:34 신고

    '438' 런타임 오류가 발생하였습니다.
    개체가 이 속성 또는 메소드를 지원하지 않습니다.

    라는 오류메시지가 뜨면서 디버거는 "검색어 = WorksheetFunction.EncodeURL("맛집")"를 노란색 처리했습니다.
    책의 내용대로 설정을 모두 하고 동영상도 체크하고 소스도 그대로 복사해 붙여 실행해보았습니다.
    내용 보시고 댓글 달아주시면 감사하겠습니다.

  7. berber 2018.03.11 21:37 신고

    안녕하세요? 예제 ex02-1 실행했는데... 에러가 나옵니다.

    '-2147417848(80010108)' 런타임 오류가 발생했습니다.
    자동화 오류입니다
    호출된 개체가 해당 클라이언트로 연결이 끊어졌습니다.

  8. 안준우 2018.03.27 18:22 신고

    엑셀2016, 익스플로러11 버전입니다.

    '-2147417848(80010108)' 런타임 오류가 발생했습니다.
    자동화 오류입니다

    메세지가 나옵니다. 해결방법이 없을까요?

  9. 안준우 2018.03.27 18:49 신고

    엑셀2016, 익스플로러11 버전인데 어떤 멘트를 봐야하나요?

    엑셀 2013 미만 버전이 아닌데 에러가 나거든요.
    너무 잘 보고있는데 한번 더 해결방안 부탁드리겠습니다.

  10. 김민수 2018.04.24 15:12 신고

    김경록 선생님 안녕하세요! 덕분에 많이 배우고 있습니다.
    네이버 블로그영역 타이틀과 내용은 예제를 보고 스크래핑이 가능한데
    혹시 썸네일 이미지를 스크래핑할 방법이 없을까요
    초보라 궁금해서 여쭤봅니다!
    아래는 이미지 부분 소스입니다