google apps script 지식 0으로부터의 스크래핑【초보자용】

google apps script 지식 0부터 스크래핑을 시도했습니다.

본 기사의 거친 흐름으로서는 아래와 같습니다.

1.google apps script의 기술처
2. 일단 움직여 보자(로그 출력)
3. 일단 움직여보세요 (스프레드 시트에 값을 씁니다)
4. 표준 기능만으로 스크래핑
5. 라이브러리를 이용한 스크래핑

필요한 것



· google 계정

이상! 개발 툴도 웹상이므로 바삭바삭 만들 수 있어요!

스크립트 작성 위치



스프레드시트의 스크립트 편집기에서 작성 가능
엑셀의 vbs 같은 느낌이군요.


어쨌든 우선 로그 출력



우선 javascript와 같은 언어라고 하는 것으로 console.log로 로그 출력해 보았습니다.
function myFunction() {
  console.log('test');
}

로그 확인은 메뉴 표시 → 로그에서 확인할 수 있습니다.


스프레드시트에 문자 쓰기



스크레이핑한 결과를 스프레드시트에 기재하고 싶으므로 스프레드시트에 문자열을 기술해 보았습니다.
※스프레드시트에의 액세스권 부여가 필요했습니다. 김과 기세로하고 있기 때문에 김과 기세로 OK했습니다.

1.sheet 객체 얻기
2.range 오브젝트를 취득해 거기에 testtest 라고 하는 값을 세트
function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange('A1').setValue('testtest');
}



스크래핑 구현



야후 톱 페이지로부터 타이틀 태그를 취득하는 코드를 써 보았습니다.
function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var url = 'https://www.yahoo.co.jp/';
  //トップページ情報をすべて取得
  var content = UrlFetchApp.fetch(url).getContentText('UTF-8');
  //タイトルタグに一致する部分を正規表現で取得  
  var titleRegexp = new RegExp(/<title>.*?<\/title>/);
  var item = content.match(titleRegexp);
  sheet.getRange('A1').setValue((item[0]));
}



얻을 수 있었습니다!

라이브러리 사용을 위한 준비



정규 표현으로는 조금 힘들다고 생각했으므로, 라이브러리를 임포트 해 여러가지 해 보았습니다.
이번에는 라이브러리 사용법, 지금 내가 아는 라이브러리에 대해 소개합니다.

라이브러리 목록


내가 조사한 스크래핑을 보다 사용하기 쉽게 하기 위한 라이브러리입니다.

라이브러리 이름

기능 소개

파서
M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV
문자열의 from,to를 지정하고 그 사이의 문자를 가져옵니다.

html-parser-gas
1Jrnqmfa6dNvBTzIgTeilzdo6zk0aUUhcXwLlQEbtkhaRR-fi5eAf4tBJ
getElementbyId 등을 사용할 수 있습니다.
로드할 웹사이트가 반드시 올바른 형식이어야 합니다.
amazon 웹사이트를 분석할 수 없었습니다.


이번에는 Parser 라이브러리를 사용하여 스크레이핑 해 나가려고합니다.

라이브러리 가져오기 방법



리소스 → 라이브러리에서 키를 지정하고 가져옵니다.


Parser 라이브러리를 사용하여 아마존의 상품명 얻기



html-parser-gas에서는 amazon에서
Parser 라이브러리를 사용하여 아마존의 상품명을 얻으려고합니다.
이미지


출처

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var url = 'https://www.amazon.co.jp/gp/product/B00D1B8R9G?pf_rd_r=8QJ2ZY7TYN1EPACKS1V0&pf_rd_p=3d322af3-60ce-4778-b834-9b7ade73f617';
  var content = UrlFetchApp.fetch(url).getContentText();

  var scraped = Parser
                    .data(content)
                    .from('<span id="productTitle" class="a-size-large">')
                    .to('<span class')
                    .build();
  sheet.getRange('A1').setValue(scraped);
}



이렇게 함으로써 무사한 값을 얻을 수 있었습니다!

정기 실행



스크래핑의 값은 정기 실행하여 자동으로 값을 취득하고 싶네요.
그래서 정기 실행을 만드는 방법을 조사해 보았습니다.

1. 스크립트의 편집에서 현재 프로젝트 트리거를 선택합니다.


2. 트리거 추가를 클릭


3. 이벤트의 소스를 시간 수동형으로 변경


이상!

번외편 IMPORTXML 함수로 정보 취득





=IMPORTXML("htps : //오오 gぇ. 코m/ ", "//title")
이제 야후의 제목을 얻을 수 있습니다.
굉장히 편리, 단지 수가 많으면 무거워질 것 같습니다.

참고 : htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / sp 라 d ぇ t /

좋은 웹페이지 즐겨찾기