자바스크립트

[자바스크립트] 자바스크립트로 웹 크롤링 하기

세모이 2022. 5. 27. 11:18
반응형

자바스크립트로 크롤링 하기

1. 크롤링

크롤링은 웹페이지 내용을 그대로 읽어와서 원하는 내용을 추출하는 작업.


2. 필요한 라이브러리

axios - http 호출을 더 편리하게 해주는 http 클라이언트 라이브러리.

cheerio - 로드된 HTML을 파싱하여 DOM을 생성하는 라이브러리. 웹브라우저에서 제공하는 DOM인터페이스와는 사용 방법이 다르지만 구현된 기능 자체는 대부분 비슷해 CSS 셀렉터 문법을 사용한 검색이 가능


3. 코드 작성

네이버에서 오늘 읽을만한 글을 크롤링하고 싶다고 가정하자.

const axios = require('axios');
const cheerio = require('cheerio');

async function main(){
    // html 로드하기
    const resp = await axios.get(
        'https://www.naver.com/'
    );
    let ulList = [];

    // html을 파싱하고 DOM 생성하기
    const $ = cheerio.load(resp.data)
    // / ul.list_theme를 찾고 그 children 노드를 elements에 저장
    const elements = $('ul.list_theme').children('li');

    // elements를 순회하며 ulList에 카테고리, 제목, 내용을 저장
    elements.each((index, el)=>{
        ulList[index] = {
            category : $(el).find('a.theme_info em').text(),
            title : $(el).find('a.theme_info strong').text(),
            context : $(el).find('a.theme_info p').text()

        }
    });

    console.log(ulList)
}

main();

4. 실행

node 파일이름.js

실행한 결과

[
  {
    category: ' 책방',
    title: '“그곳엔 여자들만 살 수 있는 독약이 있대”',
    context: '약병, 그리고 음식. 그 약제사는 여자들의 비밀을 제조하는 자였다.★★★★★ 아마존, 뉴욕타임스, USA투데이, 퍼블리셔스위클리 베스트셀러 & 전 세계 40개국 번역 출간 미국 유수 매체가 꼽은 2021년도 최대 기대작! 죽음을 파는 약제사 넬라. 오직 여자들에게만,그 약방의 문이 열린다! 18세기 독약 가게와 현대 런던이 교차하는 독과 복수와 반전'
  },
  {
    category: ' 책방',
    title: '평범한 일상에 찾아온 잔잔한 폭풍과 무너지는 날에도 담담히 나아가는 사람들',
    context: '아무렇지 않다? 아무렇지 않다! 아무렇지 않은 게 아닌, 아무렇지 않은 이 텅빈 상태 정말 아무렇지 않은걸까... 인간이 현실을 직시하며 살아갈 수는 있는 것일까? 난 현실을 회피하며 살고 있는 것일까? 머리 속도 마음 속도 텅 빈것 같다. 아무 생각도 아무 감정도 생기지를 않는다. 일상이 색을 잃었다. 그림들이 뭔가 무겁고 탁하고 흐릿하다. 내가 보내는 '
  },
  {
    category: ' 책방',
    title: '김짠부가 말하는 덜 쓰기 그 다음 이야기',
    context: '45만 구독자를 모은 ‘가계부 언박싱’을 그만두고 광고도 안 붙이며 팟캐스트를 시작했다! 그게 더 나답고 행복해서, 더 벌 수 있더라고요? 김짠부가 말하는 ‘덜 쓰기’ 그다음 이야기, ‘덜 쓰는 소비자였던 나’에서 ‘더 버는 생산자인 내’가 되면 나를, 돈을, 세상을, 보'
  },
  {
    category: ' 책방',
    title: '이상한 나라의 헌책방 주인장의 독서담',
    context: '왜 책을 좋아하는가?나는 지난 15년 동안 헌책방에서 일하며 이런 사람들을 적잖이 만났고 심지어 그들을 인터뷰한 내용을 가지고 책 도 썼다. 내가 만난 그들은 하나같이 왜 책을 좋아하는지 이유를 설명하지 못한다는 공통점을 가지고 있다. 마치 연인이 “자기는 왜 날 사랑해?”라고 물으면 “사랑하는 데 무슨 이유가 필요하니?&r'
  },
  {
    category: ' 책방',
    title: '비주얼 아티스트 ‘아방’의 세계',
    context: '시간이 빠르다는 말을 깊숙이 실감하는 매일이다. 많은 것이 사라지고 의도치 않게 멀어지고 나 또한 변하는 시간 속에서, 한결같음에 감사하는 마음이 드는 사람들이 있다. 문득 바람에서 온기를 느낀 봄의 끝자락이라든지, 한참 모니터만 들여다 보며 일에 몰두하다 고개를 들었는데 소리도 없이 파아랗게 진해진 하늘에 구름이 귀엽게 떠있을 때라든지, 새벽녘 이슬 앉았'
  },
  {
    category: ' 책방',
    title: '미래는 다시 위대해질 수 있을까?',
    context: '미래는 다시 위대해질 수 있을까? …스크롤! 가치 붕괴, 의미 부재, 창궐하는 음모론… 미래는 다시 위대해질 수 있을까? 소설가 정지돈의 신작 장편소설 『…스크롤!』이 민음사 ‘오늘의 젊은 작가 시리즈’로 출간되었다. 소설의 선형적인 전개 구조를 뒤섞고, 다종다양한 장르를 한 텍스트에 결집시키는 독특한 시도로 문지문학상, 젊은작가상을 수상하며 그만의 인상적'
  },
  {
    category: ' 책방',
    title: '30년 요리 경력 정미경의 특급 샌드위치 레시피',
    context: '‘정미경’이라는 이름이 곧 브랜드다30년 요리 경력으로 쌓아온특급 샌드위치 레시피 수록 정미경 저 │ 212쪽 │ 14,800원   저자 소개‘정미경’, 이제 그녀의 이름은 곧 하나의 브랜드가 되었다. 일찍이 수많은 요리 분야 베스트셀러의 저자이자, 각종 방송 출연과 요리 수업을 통해 대한민국 대표 요리연구가로 이름이 났다. 자신 있게 이름을 내건 <'
  },
  {
    category: ' 책방',
    title: '“남과 같아지려 하지 마라. 삶은 나만의 별을 찾아가는 여행이다.”',
    context: "미래학자 이광형의 꿈의 힘, 우리는 모두 각자의 별에서 빛난다 머리말을 읽다가 덮는다. 아니 서울대학교 나오고 카이스트 대학원 나온 분이 대학 졸업을 목전에 둔 20대 시절 이런 고민을 했단다. '왜 나는 남보다 잘하는 게 하나도 없을까? 무엇 하나 자신 있는 게 없어.' 저기요, 총장님. 그럼 저는 어떡하라고요? 그런데 또 한 번 충격을 준다. 카이스트 "
  },
  {
    category: ' 책방',
    title: '애틋한 성장소설이자 탁월한 퀴어소설',
    context: '지은이 이혜오 분야 국내도서 > 소설 > 한국소설 판형 135*200, 무선제본 | 쪽수 256쪽 | 발행일 2022. 5. 16. 가격 15,000원 | ISBN 979-11-974142-9-9 (03810) 1. 책 소개 누군가는 미워하고 누군가는 관심도 없겠지만 어쩌면 누군가는 열렬히 사랑하게 될지도 모를 이름, 이혜오. 한국문학이 주목해야 할 새로운'
  },
  {
    category: ' 책방',
    title: '이 시대의 걸작, 출간 13년 만에 전면개정!',
    context: '제102회 나오키상 수상, 팔콘상 수상, ‘이 미스터리가 대단해’ 랭킹 1위 등 ‘탐정 사와자키’ 시리즈의 정점이라 할 《내가 죽인 소녀》. 2009년 국내에 소개되어 낭만 마초 사와자키의 매력을 알리며 오래도록 사랑받은 이 작품이 13년 만에 개정을 마치고 다시 한국 독자를 찾는다. 10여 년의 세월을 반영해 현재의 감각으로 전문을 섬세하게 가다듬은 것은'
  },
  {
    category: ' 책방',
    title: '이용재 본격 식재료 에세이',
    context: '5월 9일 출간 예정인 『오늘 브로콜리 싱싱한가요?』 출간 전 연재를 시작합니다!“소금 간은 습관보다 한 발짝 더” “고사리나물에는 안초비와 올리브 더해보기” “여름의 끝자락에 멜론보단 파인애플에 프로슈토 얹어 먹기” 이용재 음식 평론가가 들려주는 평범한 식재료를 더 맛있고, 향긋하게 즐기는 '
  },
  {
    category: ' 책방',
    title: '하버드 의대 교수이자 전 세계 공감 분야 최고 권위자가 25년에 걸쳐 연구한 결과물!',
    context: '공감은 감성지능의 핵심 능력이며 인간의 타고난 능력이지만 제대로 평가를 받지 못했다. 이 책은 상대방에게 공감하는 것의 힘과 그 방법을 정말 알기 쉽게 풀어냈다. 심리학 책 추천 < 당신은 너무 늦게 깨닫지 않기를 > 이 책은 타인을 이해하는 단순한 행위를 통해 상대를 알아가고 도울 줄 아는 인간의 놀라운 힘을 탐구한다. 정말 유용하지만 쉽게 오해되기도 하'
  },
  {
    category: ' 책방',
    title: '“당신은 최상층에 오를 준비가 되었습니까?”',
    context: '최근 <아비투스>를 다시 읽었다. 독서 모임 책으로 선정됐기 때문이다. 마침 기억도 희미하던 차였다. 딱히 인상 깊은 문장이나 내용이 없다. 보통 재미없는 책이 이런 편이다. 동시에 이 글을 쓰기 전 2020년에 쓴 <아비투스> 후기를 읽었다. 글이 처참했다. 깊이라고는 조금도 느껴지지 않는다. 책을 이해하지 못한 티가 난다. 이유는 충분했다. 이야깃거리도'
  },
  {
    category: ' 책방',
    title: '백 년의 시간을 감싸안으며 이어지는 사랑과 숨의 기록',
    context: '소설 밝은 밤 증조 할머니, 할머니, 그리고 엄마를 거쳐 내게 도착한 이야기. 그렇게 나에게로 삶이 전해지듯 지금의 나도 그들에게 닿을 수 있을까. 과거의 무수한 내가 모여 지금의 내가 만들어졌듯 지금의 나 또한 과거의 수많은 나를 만나러 갈 수 있을까? 묘한 경험을 한 책이 었다. 분명 스토리에 빠져 들었는데 소설 속 내용과 무관하게 나의 과거를 함께 만'
  },
  {
    category: ' 책방',
    title: '뿌리 깊은 트라우마 치유의 기록',
    context: '“모든 자아성찰은 용감한 시도다” 베스트셀러 작가이자 임상심리학자 캐서린 길디너의 인간정신의 회복에 관한 강력하고 대담하며 매혹적인 이야기생존자들뿌리 깊은 트라우마를 극복한 치유의 기록 캐서린 길디너 지음, 이은선 옮김★아마존 2020 베스트셀러, 이달의 책 선정★ ★굿모닝 아메리카 2020 페이버릿북 선정★ ★노벨문학상 수상작가 J.'
  },
  {
    category: ' 책방',
    title: '보이는 모습이 전부는 아니야!',
    context: '#집안에무슨일이 정원이 딸린 아름다운 집이네요! 창문으로 맘씨 좋은 할머니가 보여요. 앗, 손님들을 쥐와 바퀴벌레로 둔갑시키는 으스스한 마녀였군요! 마법의 물약을 만들고 있네요. 도와주세요! 집에 불이 났어요! 걱정 마세요! 용이 아침 식사로 베이글을 굽고 있으니까요. 용은 바싹 구운 베이글을 좋아한답니다. 창문으로 해골바가지들이 보여요. 섬뜩한 집이에요!'
  },
  {
    category: ' 책방',
    title: '기절할 만큼 맛있는 가지!',
    context: '가지가 다한 요리 맛과 건강을 모두 잡은 가지 레시피 34 판 형 172*240mm | 발행일 2022년 5월 13일 | 쪽 수 156쪽 | 제 본 무선 가 격: 16,500원 | 분 야 국내도서> 요리> 재료별 요리 ISBN 979-11-91937-16-9 (13590) 책 소개 기절할 만큼 맛있는 가지! 더 맛있게, 더 쉽게, 더 다양하게 즐기는 가지 '
  },
  {
    category: ' 책방',
    title: '이 책을 읽으면 당신의 피로는 사라집니다',
    context: '아무리 쉬어도 , 충분히 자도 피곤하다고요? *** 일상에서, 업무 중에, 집안일을 할 때 자세를 살펴보세요. 그리고 ‘피곤해지지 않는 자세’로 바꿔보세요. 자세를 바꾸기만 해도 우리 몸은 놀랍게 변합니다. 일상 피로가 사라지면 인생이 즐거워집니다! 국가 대표를 지도한 최고 트레이너의 최강 비법 푹 자고 일어나도 도무지 피로가 풀리지 '
  },
  {
    category: ' 책방',
    title: '마음을 파헤칠수록 드러나는 불안의 쓸모',
    context: '"무조건 없애야 한다고 생각했던 불안이 이토록 쓸모 있을 줄이야!"인생의 가치와 멀어질수록 울려 대는 내면의 경고음을 적극 활용할 것!‘미라클 모닝’, ‘갓생 루틴’, ‘00 챌린지’,… 코로나19와 숨 막히는 현실이 만들어 내는 온갖 자기계발들이 매일 봇물처럼 '
  },
  {
    category: ' 책방',
    title: '억눌린 여성의 운명과 욕망이 불 꺼진 집 안을 벗어났을 때 생겨나는 서스펜스',
    context: '올 초에 읽었던 에밀리 브론테의 <폭풍의 언덕> ,샬롯 브론테의 <제인 에어>, 제인 에어의 스핀 오프 격인 진 리스의 <광막한 사르가소 바다>의 한 선상에 두고 읽어볼 만하다. 개스켈은 샬롯 브론테의 전기를 쓸 만큼 절친한 사이였고, 여성 서사를 전개할 때 언급되는 소재와 특징들을 세 단편에 고루 찾아볼 수 있다. <회색 여인> 속 아나 셰러의 탈...'
  }
]
반응형