TL;DR
원하는 키워드를(예: 배달)의 네이버 검색 결과를 구글 스프레드시트에 저장하는 방법을 기록하였습니다.
GAS(Google Apps Script)를 사용하였습니다. (무료 + 서버리스)
How To
구글 스프레드시트
구글 스크립트
리소스 > 라이브러리 > 제목 없는 프로젝트 > Add a library 입력 후 추가> Parser 사용 > 저장
Add a library :
M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV
Parser 버전 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(/"/g, '').replace(/"/g, '').replace(/>/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(/"/g, '').replace(/"/g, '').replace(/>/g, '');
pressArray.push(press[i]);
}
// date
var dateArray = [];
for (i = 0; i < date.length; i++) {
date[i] = date[i].replace('</span>', '').replace('<', '').replace('>', '').replace(/"/g, '').replace(/"/g, '').replace(/>/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 > 권한 검토 > 확인되지 않은 앱 > 고급 > 제목 없는 프로젝트(으)로 이동(안전하지 않음) > 허용