GAS로 네이버 키워드 크롤링하고 구글 스프레드시트에 저장

19653 단어 GoogleAppsScriptgas


TL;DR



우리는 원하는 키워드를 (예 : 배달)의 네이버 검색 결과를 구글 스프레드 시트에 저장하는 방법을 기록했습니다.
GAS (Google Apps Script) 사용 (무료 + 서버리스)

How To



구글 스프레드시트



도구 > 스크립트 편집기


Google 스크립트



리소스 > 라이브러리 > 제목없는 프로젝트 > Add a library 입력 후 추가 > Parser 사용 > 저장

Add a library : M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUVParser 버전 8 선택, Development mode 사용





코드 입력 후 저장

코드.gs
function myFunction() {  
    // request
    var keyword = '배달';
    var url = "https://m.search.naver.com/search.naver?where=m_news&sm=mtb_jum&query=" + keyword;
    var options = {
        'method': 'GET',
        'muteHttpExceptions': true,
    }
    // 네이버에 요청하기
    var response = UrlFetchApp.fetch(url, options);
    var html = response.getContentText('UTF-8');

    // 제목, 링크, 언론사, 날짜 : 15개 결과 나옴
    var subject = Parser.data(html).from('<div class="api_txt_lines tit">').to('</div>').iterate();
    var link = Parser.data(html).from('<div class="dsc_wrap">').to('class=').iterate();
    var press = Parser.data(html).from('default_press\'"></span>').to('<').iterate();
    var date = Parser.data(html).from('</a><span class="info">').to('<').iterate();

    // subject
    var subjectArray = [];
    for (i = 0; i < subject.length; i++) {
        // 1차 가공
        subject[i] = subject[i].replace('</b>', '').replace('<b class="hl">', '').replace(/&quot;/g, '').replace(/"/g, '').replace(/&gt;/g, '');
        // 2차 가공
        subject[i] = subject[i].replace(/(<([^>]+)>)/ig, "");
        subjectArray.push(subject[i]);
    }

    // link
    var linkArray = [];
    for (i = 0; i < link.length; i++) {
        link[i] = link[i].replace('<a href=', '').replace(/"/g, '').trim();
        linkArray.push(link[i]);
    }

    // press
    var pressArray = [];
    for (i = 0; i < press.length; i++) {
        press[i] = press[i].replace('</span>', '').replace('<', '').replace('>', '').replace(/&quot;/g, '').replace(/"/g, '').replace(/&gt;/g, '');
        pressArray.push(press[i]);
    }

    // date
    var dateArray = [];
    for (i = 0; i < date.length; i++) {
        date[i] = date[i].replace('</span>', '').replace('<', '').replace('>', '').replace(/&quot;/g, '').replace(/"/g, '').replace(/&gt;/g, '');
        dateArray.push(date[i]);
    }

    // 스프레드시트 시작
    var sheet = SpreadsheetApp.getActiveSheet();
    // 시트 클린
    sheet.clear();
    // row, col 
    // A1,B1,C1,D1 고정한다.
    sheet.getRange(1, 1).setValue('링크'); // 1행,1열
    sheet.getRange(1, 2).setValue('제목');
    sheet.getRange(1, 3).setValue('언론사');
    sheet.getRange(1, 4).setValue('날짜');

    // 링크값 길이로 루프를 돌린다.
    for (i = 0; i < linkArray.length; i++) {        
        row_list = [linkArray[i], subjectArray[i], pressArray[i], dateArray[i]]; // 링크, 제목, 언론사, 날짜
        // 시트에 넣기
        sheet.appendRow(row_list);        
    }
}

코드 실행

실행 > 함수 실행 > myFunction > 권한 검토 > 확인되지 않은 앱 > 고급 > 제목없는 프로젝트로 이동(안전하지 않음) > 허용





Running function myFunction 약 5초 내외로 동작되요. > 스프레드시트 확인

좋은 웹페이지 즐겨찾기