본문 바로가기
GAS

[GAS] cheerio를 이용한 Daum뉴스 크롤링

by 일등미노왕국 2023. 4. 19.

더보기
function getContent_(url) {
    return UrlFetchApp.fetch(url).getContentText()
}

function scraper() {
    
    const content = getContent_("https://news.daum.net/"),            // 다음 뉴스 검색 URL
          $ = Cheerio.load(content),                                  // 크롤링을 위한 Cheerio 선언
          daum_news = $('.list_newsissue > li').toArray();            // 다음 뉴스 메인기사 태그를 daum_news에 배열에 담아라

    let sht = SpreadsheetApp.getActiveSheet(),                        // 현재시트를 sht로 선언
        titles = [];                                                  // 최종 배열들을 담을 titles 배열 선언

    daum_news.forEach((li) => {                                       // daum_news 배열들은 순환
      let title = $(li).find("div").last().find("a").text().trim(),   // li 태그중 div 태그들 중 마지막 div태그의 a태그 속 text를
                                                                      // 가져오는데 공백을 제거해라
          category = $(li).find("div").last().find(".txt_category").text().trim();
                                                                      // li태그 중 div태그중 마지막 div속 class가 txt_category인
                                                                      // text를 가져오는데 공백을 제거해라
      titles.push([category, title]);                                 // titles 배열에 각 배열들을 인수로 추가해라
    });
  
  sht.getRange("a1").getDataRegion().clearContent();                  // 기존 영역을 삭제
  sht.getRange(1, 1, titles.length, titles[0].length).setValues(titles);  // 셀에 출력해라

};

마치 크롤링을 처음 배우는것처럼 설레고 재미지다...

이제 트리거를 연결해서 텔레그램 챗봇이나 메일로 발송을 하면 더욱 멋질것 같다.

 

우리의 내일은 오늘보다 하나 더 나은 삶일것이다.

 

https://docs.google.com/spreadsheets/d/1JrG1fKobRWPW8sJm5O05S859ieT9UDZn-nUH7RNzl0g/edit?usp=sharing

댓글