Skip to content
Home » 자바 스크립트 크롤링 | Node.Js 크롤링 – 인프런 사이트 크롤링하기 모든 답변

자바 스크립트 크롤링 | Node.Js 크롤링 – 인프런 사이트 크롤링하기 모든 답변

당신은 주제를 찾고 있습니까 “자바 스크립트 크롤링 – Node.js 크롤링 – 인프런 사이트 크롤링하기“? 다음 카테고리의 웹사이트 kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: kk.taphoamini.com/wiki. 바로 아래에서 답을 찾을 수 있습니다. 작성자 개발자의품격 이(가) 작성한 기사에는 조회수 6,011회 및 좋아요 123개 개의 좋아요가 있습니다.

Table of Contents

자바 스크립트 크롤링 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 Node.js 크롤링 – 인프런 사이트 크롤링하기 – 자바 스크립트 크롤링 주제에 대한 세부정보를 참조하세요

[개발자의 품격] 품격있는 개발자 되기!
node.js에서 axios, cheerio 모듈을 이용해서 인프런 웹사이트를 크롤링해봅니다.

자바 스크립트 크롤링 주제에 대한 자세한 내용은 여기를 참조하세요.

[TIL] 자바스크립트로 크롤링 하기 – velog

… 개발자는 귀찮은 걸 싫어 해야 한다고 했다.좋은 해결 방법중 하나, 웹 사이트를 크롤링 해주는게 좋다고. … [TIL] 자바스크립트로 크롤링 하기.

+ 여기에 표시

Source: velog.io

Date Published: 2/7/2022

View: 9797

자바스크립트 크롤링 따라하기 – 아미넴

아무래도 비전공자들이 사용하기 쉽고 제공하는 라이브러리도 많은 언어라서 그런거 같아요. 그런데 저는 파이썬을 다뤄 본 적이 많지 않아서 JavaScript …

+ 자세한 내용은 여기를 클릭하십시오

Source: sangminem.tistory.com

Date Published: 3/12/2021

View: 2803

Node.Js 크롤링 – 인프런 사이트 크롤링하기 168 개의 정답

JavaScript 웹 크롤링 하기 | Leon. 먼저 크롤러를 만들기 위해 필요한 라이브러리들을 정리해 보자. 우리는 axios와 cheerio를 사용해 크롤링을 할 …

+ 여기에 표시

Source: da.taphoamini.com

Date Published: 5/2/2021

View: 5481

[웹 크롤링] JavaScript로 된 html 불러오기 – 소품집

JavaScript는 객체 기반의 스크립트 언어로 웹 브라우저의 경우 엔진이 인터프리터의 역할을 수행; JavaScript는 HTML 및 CSS와 함께 사용됩니다.

+ 여기에 표시

Source: sodayeong.tistory.com

Date Published: 6/29/2021

View: 9896

자바 스크립트 크롤링 | Node.Js 크롤링 – 인프런 사이트 크롤링 …

[개발자의 품격] 품격있는 개발자 되기! node.js에서 axios, cheerio 모듈을 이용해서 인프런 웹사이트를 크롤링해봅니다. 자바 스크립트 크롤링 주제에 …

+ 여기에 표시

Source: you.giaohangso1.vn

Date Published: 9/19/2022

View: 3125

자바스크립트와 Node.js를 이용한 웹 크롤링 테크닉 – 인터파크

자바스크립트와 Node.js를 이용한 웹 크롤링 테크닉. 수집 저장 분석에서 머신러닝까지. 쿠지라 히코우즈쿠에 저이동규 역 제이펍 2016.12.30. 판매지수 27. 별점9.7.

+ 여기에 표시

Source: mbook.interpark.com

Date Published: 7/30/2021

View: 1019

웹 크롤링 테크닉(자바스크립트와 Node.js를 이용한) – 11번가

T멤버십 최대 15% 할인/적립, 카테고리 : 프로그래밍 언어, 가격 : 27000원.

+ 여기에 표시

Source: www.11st.co.kr

Date Published: 9/27/2022

View: 4876

JavaScript 웹 크롤링 하기 – Leon

먼저 크롤러를 만들기 위해 필요한 라이브러리들을 정리해 보자. 우리는 axios와 cheerio를 사용해 크롤링을 할 것이다. axios는 자바스크립트를 이용해 …

+ 여기에 더 보기

Source: chaewonkong.github.io

Date Published: 4/10/2022

View: 4989

주제와 관련된 이미지 자바 스크립트 크롤링

주제와 관련된 더 많은 사진을 참조하십시오 Node.js 크롤링 – 인프런 사이트 크롤링하기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

Node.js 크롤링 - 인프런 사이트 크롤링하기
Node.js 크롤링 – 인프런 사이트 크롤링하기

주제에 대한 기사 평가 자바 스크립트 크롤링

  • Author: 개발자의품격
  • Views: 조회수 6,011회
  • Likes: 좋아요 123개
  • Date Published: 2021. 4. 8.
  • Video Url link: https://www.youtube.com/watch?v=xbehh8lWy_A

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

지역 문화생활 활성화를 위한 앱 프로젝트중에 공연중인 연극을 홍보한다면 좋을거 같다는 생각이 들었다.

허나 매일 어떤 연극을 하고있나 검색해 넣어줄수는 없는법, 자고로 개발자는 귀찮은 걸 싫어 해야 한다고 했다.

좋은 해결 방법중 하나, 웹 사이트를 크롤링 해주는게 좋다고 생각했다.

크롤링 이란? 필요한 라이브러리

1. 크롤링 이란?

크롤링 이란? 많은 양의 데이터를 추출하기 위해 데이터를 가져오는 것을 말한다.

2. 필요한 라이브러리

Axios – Axios는 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리입니다. Cheerio – Cheerio 모듈은 그 받아온 페이지를 파싱하여 전체 페이지 중에서 필요한 부분의 정보만을 가져올 수 있다.

3. Example

먼저 세팅과 라이브러리 설치를 해줍니다.

npm init -y npm i –save axios cheerio

연극 목록에서 가져와야 할 데이터의 기준을 정합니다.

저 같은 경우는 ul태그를 기준으로 잡았습니다.

ul class = row1 li div class = list_title < a > ……

ul.row1 의 태그를 찾고 li태그의 데이터를 저장합니다.

title 같은 경우 ul.row1 -> li -> div.list_title -> a 태그 순으로 찾아 저장한 겁니다.

자바스크립트 크롤링 따라하기

반응형

안녕하세요.

오늘은 번외로 실용적인 내용을 준비했습니다.

목차

크롤링이 필요한 이유

아끼는 대학 후배를 오랜만에 만났는데 한 웹사이트에서 검색을 하여 수백 건에 이르는 결과를 일일이 한 땀 한 땀 엑셀에 붙여넣는 노가다성 작업을 한다면서 힘들어 하더라구요.

그 말을 듣고 제가 가만히 있을 수는 없었죠.

어떻게든 한방에 할 수 있는 방법을 찾아보겠다고 호언장담을 했습니다.

크롤링이란

사실 크롤링이라는 용어는 잘 몰랐는데 들어보니 저는 스크래핑으로 알고 있었던 기술이었어요.

보통 이 두 가지 용어를 혼용해서 쓰는거 같아요.

간단히 말하면 웹페이지 내용을 그대로 읽어와서 원하는 내용을 추출하는 작업인데요.

어떻게 사용하느냐에 따라 굉장히 유용한 결과물을 얻어낼 수 있어 보입니다.

크롤링을 위한 사전 준비

이 분야에서는 보통 파이썬(Python)이 많이 쓰인다고 하네요.

아무래도 비전공자들이 사용하기 쉽고 제공하는 라이브러리도 많은 언어라서 그런거 같아요.

그런데 저는 파이썬을 다뤄 본 적이 많지 않아서 JavaScript를 이용하여 작업을 했습니다.

조만간 파이썬으로도 하는 방법을 정리해서 게시하도록 해볼게요. 🙂

+내용 추가 (2020.09.01)

파이썬 크롤링 모음 이동

약속 지켰습니다 ㅎㅎ

이 내용은 관심있는 분만 보시면 됩니다.

nodeJS 및 필요 모듈 설치

먼저 nodeJS가 필요합니다.

설치 방법을 잘 모르시겠다면

링크를 하나 남겨 놓을테니 참고하시면 되구요.

node js 설치 (on Windows)

서버까지 띄우실 필요는 없어요.

그 다음으로 axios, cheerio 라는 두 가지 모듈은 설치하셔야 됩니다.

터미널 작업할 디렉토리에서 npm 명령어를 이용하여 다음과 같이 입력하세요.

npm i axios cheerio

axios는 URL을 호출하여 웹페이지 HTML을 그대로 가져와 Promise 형태로 반환하는 모듈입니다.

자세한 사항은 아래 참고하시면 되구요.

axios/axios

cheerio는 HTML DOM 형태의 데이터에서 원하는 내용을 쉽게 추출할 수 있게 해주는 기능을 가진 모듈이에요.

더 궁금하신 사항은 아래 링크에서 확인하시면 됩니다.

cheerio

크롤링 코드 작성

이제 코드를 작성해 보겠습니다.

먼저 위에서 설치했던 모듈을 포함하여 아래와 같이 세 가지 모듈을 불러옵니다.

const axios = require(“axios”); const cheerio = require(“cheerio”); const fs = require(‘fs’);

fs는 파일시스템 모듈로 nodeJS 기본 제공 모듈입니다.

텍스트 파일을 읽고 쓰기 위해 사용합니다.

그 다음 필요 전역 변수를 선언해줍니다.

var resultList = []; var cnt = 0;

결과 데이터를 저장할 배열 변수 및 마지막에 파일로 쓰기 위해 카운팅 변수를 하나 선언했습니다.

다음으로 URL을 호출하여 HTML 데이터를 받아오는 함수 하나를 정의합니다.

function delay(ms) { return new Promise(function(resolve, reject) { setTimeout(function(){ resolve(); },ms); }); } function getHTML(url) { return new Promise(resolve=>{ delay(300).then(function() { axios.get(url).then(function(data) { resolve(data); }); }); }) }

axios 모듈을 이용하여 입력받은 URL을 호출하여 HTML 데이터를 그대로 받아오는 기능을 구현했는데요.

여러 건 호출할 경우를 대비하여 0.3초 간격으로 호출되도록 구현하였습니다.

그리고 실습해 볼 샘플 파일을 하나 가져왔습니다.

sample.txt 0.00MB

아래와 같이 크롤링에 필요한 URL 정보가 다수 담겨 있습니다.

이제 본격적으로 메인 함수를 구현하겠습니다.

function main() { fs.readFile(‘sample.txt’,’utf8′,function(err, data){ var allText = data; var list = allText.split(‘

‘); var workList = []; for(var i=1; i { let result = {}; const $ = cheerio.load(html.data); result[‘title’] = $(“body”).find(“.search_tit”).text(); result[‘date’] = $(“body”).find(“.tit_loc”).text(); result[‘content_trans’] = $(“body”).find(“.ins_view_pd”).find(“.paragraph”).eq(0).text(); result[‘content_origin’] = $(“body”).find(“.ins_view_pd”).find(“.paragraph”).eq(1).text(); return result; }) }

먼저 workList 배열을 인자로 받는 makeJSON 함수를 만듭니다.

사이트에 직접 들어가 HTML 소스를 분석해 본 결과 제목은 search_tit, 날짜는 tit_loc, 본문 내용은 ins_view_pd 라는 class를 이용하고 있는 것을 확인할 수 있었습니다. 본문은 다시 번역문과 원문으로 나뉘는데 서로 같은 클래스를 이용하고 있어서 인덱스로 구분하였습니다. 그리고 그 안에서 실제 필요한 내용은 다시 paragraph 이름의 class를 가지고 있는 부분이었습니다. 그에 따라 cheerio 모듈을 이용하여 데이터를 분리하였고 JSON 형태로 값을 담았습니다.

이제 결과를 파일로 저장하는 일만 남았습니다.

function makeJSON(workList) { getHTML(workList[cnt]).then(html => { let result = {}; const $ = cheerio.load(html.data); result[‘title’] = $(“body”).find(“.search_tit”).text(); result[‘date’] = $(“body”).find(“.tit_loc”).text(); result[‘content_trans’] = $(“body”).find(“.ins_view_pd”).find(“.paragraph”).eq(0).text(); result[‘content_origin’] = $(“body”).find(“.ins_view_pd”).find(“.paragraph”).eq(1).text(); return result; }) // 추가 작성 .then(res => { cnt++; resultList.push(res); if(workList.length == cnt){ fs.writeFile(‘result_json.txt’, JSON.stringify(resultList), ‘utf8’, function(error){ console.log(‘write end’); }); } else { makeJSON(workList); } console.log(cnt); }); }

호출할 URL이 여러 건인 경우 0.3초 간격으로 제귀 호출이 됩니다.

cnt 변수를 하나씩 증가하면서 작업을 하며 마지막 결과를 받았을 경우 모든 결과를 한 번에 파일로 저장을 하고 작업이 종료됩니다. 이 경우에도 파일 저장에 fs 모듈이 사용되었습니다.

전체 소스

최종 점검을 위해 전체 소스를 제공합니다.

const axios = require(“axios”); const cheerio = require(“cheerio”); const fs = require(‘fs’); var resultList = []; var cnt = 0; function delay(ms) { return new Promise(function(resolve, reject) { setTimeout(function(){ resolve(); },ms); }); } function getHTML(url) { return new Promise(resolve=>{ delay(300).then(function() { axios.get(url).then(function(data) { resolve(data); }); }); }) } function makeJSON(workList) { getHTML(workList[cnt]).then(html => { let result = {}; const $ = cheerio.load(html.data); result[‘title’] = $(“body”).find(“.search_tit”).text(); result[‘date’] = $(“body”).find(“.tit_loc”).text(); result[‘content_trans’] = $(“body”).find(“.ins_view_pd”).find(“.paragraph”).eq(0).text(); result[‘content_origin’] = $(“body”).find(“.ins_view_pd”).find(“.paragraph”).eq(1).text(); return result; }) // 추가 작성 .then(res => { cnt++; resultList.push(res); if(workList.length == cnt){ fs.writeFile(‘result_json.txt’, JSON.stringify(resultList), ‘utf8’, function(error){ console.log(‘write end’); }); } else { makeJSON(workList); } console.log(cnt); }); } function main() { fs.readFile(‘sample.txt’,’utf8′,function(err, data){ var allText = data; var list = allText.split(‘

‘); var workList = []; for(var i=1; i

Node.Js 크롤링 – 인프런 사이트 크롤링하기 168 개의 정답 – Da.taphoamini.com

We are using cookies to give you the best experience on our website.

You can find out more about which cookies we are using or switch them off in settings.

[웹 크롤링] JavaScript로 된 html 불러오기

JavaScript의 이해

JavaScript는 객체 기반의 스크립트 언어로 웹 브라우저의 경우 엔진이 인터프리터의 역할을 수행

JavaScript는 HTML 및 CSS와 함께 사용됩니다. HTML은 웹 페이지의 전체 틀을 잡고, CSS는 개별 요소의 디자인 맡음

JavaScript는 사용자와의 상호작용을 통해 웹 페이지에서 보여주는 콘텐츠를 동적으로 제어함

AJAX와 XHR

AJAX는 JavaScript 라이브러리 중 하나이며, ‘Asynchronous JavaScript And XML'(비동기 JavaScript 및 XML)의 머리글자 입니다. (비동기처리란? 특정 코드의 연산이 끝날 때까지 코드의 실행을 멈추지 않고, 순차적으로 다음 코드를 먼저 실행하는 자바스크립트의 특성. 예를들어 은행은 동기처리, 카페는 비동기 처리)

AJAX는 HTTP 요청 대신 XHR(XHR HTTP Request) 객체를 사용함

AJAX는 웹 서버와의 통신을 통해 JSON 및 XML 형태의 데이터를 주고 받음. 하지만 JSON이 가장 편리하게 사용되는 형태

JavaScript + GET 방식 실습

: Naver Blog Main 실습

https://section.blog.naver.com/BlogHome.nhn?directoryNo=0¤tPage=1&groupId=0

블로그 메인 가져오기

# 필요 패키지 적용 library(httr) library(rvest) library(dplyr) library(tidyverse) #URL 저장 URL <- 'https://section.blog.naver.com/BlogHome.nhn?directoryNo=0¤tPage=1&groupId=0' #httr 요청 res <- GET(url=URL, query=list(directoryNo=0, currentPage=1, groupId=0)) print(res) # 찍어봤을 때 Status가 200이면 응답이 잘 된것. 2. 블로그 제목 추출하기 res %>% read_html() %>% html_nodes(css=’strong.title_post’) %>% html_text()

위를 시행하면, 해당 HTML 요소가 없다는 것을 알 수 있음.

그럼 어떻게 블로그 제목을 추출할 수 있을까요?

네이버 블로그 메인 화면

네이버 블로그 메인 화면으로 접속한 뒤, 네트워크 탭의 Doc로 이동하면 두 개의 파일이 보입니다. 그 중 첫 번째 파일의HTTP를 요청해 볼게요.

XHR에는 여러 개의 파일이 보이는데, 그중에서도 ‘DirectoryPostList.nhn’ 파일이 포스팅 헤드명을 찾아올 수 있을 것 같네요.

여기서 참고해야할 점은, XHR에서 관련 파일을 찾는 방법은 정해져 있는 게 아닌, 개별 파일을 프리뷰로 확인하고 ‘찾는 파일과 관련 되어 있는 가?’를 판단해야 합니다.

자바 스크립트가 사용된 것으로 확인됩니다.

자바 스크립트가 활용된 것을 알았으니 Network→XHR 탭에서 관련 파일을 찾아서 http를 요청할게요.

# http 요청 res <-GET(url='https://section.blog.naver.com/ajax/DirectoryPostList.nhn?directorySeq=0&pageNo=1', query=list(directorySeq='0',pageNo='1')) print(res) 잘못된 요청이라고 뜨네요. 그러면 요청 헤더 중 referer을 추가해볼까요? 요청 헤더 중 referer 추가하기 referer이란? 웹 페이지 간 이동할 때 남는 흔적을 의미함. 하이퍼링크를 통해 어떠 한 사이트에서 다른 사이트로 이동한다고 했을 때, 새로 열린 사이트에이전 사이트의 URI를 전송하는데 이것이 referer HTTP 요청 시, 웹 서버가 요청 헤더에 referer를 요구하는 경우가 있음 Request Headers에서 referer을 찾아 줍니다. HTTP 요청 시 referer 추가하기 referer은 GET() 함수에 add_headers()로 추가할 수 있습니다. res ← GET(url='해당url',add_headers(referer='해당 referer')) # referer를 다시 찾아서 설정 # URL 부분까지만 가져와도 됨!! ref <- 'https://section.blog.naver.com/BlogHome.nhn' res <-GET(url='https://section.blog.naver.com/ajax/DirectoryPostList.nhn', query=list(directorySeq='0', pageNo='1'), add_headers(referer=ref)) print(res) 이번엔 제대로 된 응답을 받은 걸 확인할 수 있었습니다. 그리고 JSON 데이터로 받은 것도 확인할 수 있네요. 그러면 JSON에서 데이터를 추출하면 되는거겠죠? JSON에서 데이터를 추출하는 방식은 다음과 같습니다. key-value 패턴으로 표현되고, 오브젝트를 전달하기 위해 사람이 읽을 수 있는 텍스트를 브라우저/서버 통신에 사용됩니다. JSON에서 데이터 추출하기 JSON 타입은 rvest 함수들을 사용하지 않고 간단하게 처리할 수 있음. fromJSON() 함수만으로 res 객체에 포함된 JSON 데이터를 추출함 리스트 객체로 저장됨= ")]}',"을 제거해야 fromJSON() 함수가 제대로 작동함 json <-res %>% as.character()%>% str_remove(pattern=”\\)\\]\\}\\’,”) %>% fromJSON() blog <-json$result$postList str(blog) 총 100개의 블로그가 제공되며, 한 페이지당 10개씩 수집할 수 있습니다. 페이지를 1~100까지 바꿔가며 데이터를 저장하면 됩니다. 728x90

자바 스크립트 크롤링 | Node.Js 크롤링 – 인프런 사이트 크롤링하기 8093 좋은 평가 이 답변

당신은 주제를 찾고 있습니까 “자바 스크립트 크롤링 – Node.js 크롤링 – 인프런 사이트 크롤링하기“? 다음 카테고리의 웹사이트 https://you.giaohangso1.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.giaohangso1.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 개발자의품격 이(가) 작성한 기사에는 조회수 5,668회 및 좋아요 116개 개의 좋아요가 있습니다.

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

[개발자의 품격] 품격있는 개발자 되기!node.js에서 axios, cheerio 모듈을 이용해서 인프런 웹사이트를 크롤링해봅니다.

… 개발자는 귀찮은 걸 싫어 해야 한다고 했다.좋은 해결 방법중 하나, 웹 사이트를 크롤링 해주는게 좋다고. … [TIL] 자바스크립트로 크롤링 하기.

+ 더 읽기

Source: velog.io

Date Published: 3/12/2022

View: 2318

아무래도 비전공자들이 사용하기 쉽고 제공하는 라이브러리도 많은 언어라서 그런거 같아요. 그런데 저는 파이썬을 다뤄 본 적이 많지 않아서 JavaScript …

+ 여기를 클릭

Source: sangminem.tistory.com

Date Published: 7/20/2022

View: 8910

자바스크립트로 이루어진 페이지 또는 영역을 크롤링하려면, 해당 페이지 … 자바스크립트 페이지의 url을 알아내는 방법은 F12를 누른 뒤 [Network] …

+ 여기에 표시

Source: www.dinolabs.ai

Date Published: 9/8/2022

View: 8396

자바스크립트 페이지의 url을 알아내는 방법은 F12를 누른 뒤 [Network] … … Most searched keywords: Whether you are looking for [웹크롤링] 자바 …

+ 자세한 내용은 여기를 클릭하십시오

Source: toplist.xosotanphat.com

Date Published: 8/28/2021

View: 9355

JavaScript로 크롤링을 하려는 이유. 스파르타 코딩클럽 내일배움단 스온스에 참여해 수강을 마치고 수강했던 웹개발 종합반과 앱개발 종합반 강좌 …

+ 여기를 클릭

Source: hyungjunjeon.github.io

Date Published: 10/14/2022

View: 2535

크롤러 개발할때도 자바스크립트로 만들면 여러모로 좋은 것 같습니다. 그런데 크롤러 만드는 강좌나 책들 보면 파이썬기준으로 작성된 것들이 많고 자바 …

+ 더 읽기

Source: www.clien.net

Date Published: 8/12/2022

View: 5209

JavaScript는 객체 기반의 스크립트 언어로 웹 브라우저의 경우 엔진이 인터프리터의 역할을 수행; JavaScript는 HTML 및 CSS와 함께 사용됩니다.

+ 더 읽기

Source: sodayeong.tistory.com

Date Published: 6/30/2021

View: 1671

자바스크립트, 노드 공부를 목적으로 하는 크롤링 포스트입니다. 크롤러를 만들기 위해 npm 프로젝트를 생성해줍니다. mkdir news-crawler cd …

+ 여기를 클릭

Source: codingbroker.tistory.com

Date Published: 1/30/2021

View: 5776

주제와 관련된 더 많은 사진을 참조하십시오 Node.js 크롤링 – 인프런 사이트 크롤링하기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

const axios = require(“axios”); const cheerio = require(“cheerio”); const fs = require(‘fs’); var resultList = []; var cnt = 0; function delay(ms) { return new Promise(function(resolve, reject) { setTimeout(function(){ resolve(); },ms); }); } function getHTML(url) { return new Promise(resolve=>{ delay(300).then(function() { axios.get(url).then(function(data) { resolve(data); }); }); }) } function makeJSON(workList) { getHTML(workList[cnt]).then(html => { let result = {}; const $ = cheerio.load(html.data); result[‘title’] = $(“body”).find(“.search_tit”).text(); result[‘date’] = $(“body”).find(“.tit_loc”).text(); result[‘content_trans’] = $(“body”).find(“.ins_view_pd”).find(“.paragraph”).eq(0).text(); result[‘content_origin’] = $(“body”).find(“.ins_view_pd”).find(“.paragraph”).eq(1).text(); return result; }) // 추가 작성 .then(res => { cnt++; resultList.push(res); if(workList.length == cnt){ fs.writeFile(‘result_json.txt’, JSON.stringify(resultList), ‘utf8’, function(error){ console.log(‘write end’); }); } else { makeJSON(workList); } console.log(cnt); }); } function main() { fs.readFile(‘sample.txt’,’utf8′,function(err, data){ var allText = data; var list = allText.split(‘

We are using cookies to give you the best experience on our website.

You can find out more about which cookies we are using or switch them off in settings.

추가 적립 안내

제1장 개발 환경 1

01 자바스크립트 엔진의 이모저모 _ 2

ECMAScript가 실현한 범용 자바스크립트의 세계 _ 2

자바스크립트 엔진의 이모저모 _ 3

자바스크립트가 데이터 수집에 적합한 이유 _ 6

02 에이전트란 무엇인가? _ 8

에이전트의 의미 _ 8

지능형 에이전트 _ 9

03 개발 환경 구축 _ 11

가상 머신에 실행 환경 구축 _ 11

가상 머신 생성 _ 12

가상 머신에 로그인하기 _ 16

Node.js 설치 _ 19

git 설치 _ 21

04 Node.js 모듈 설치 _ 24

npm이란? _ 24

npm install로 모듈 설치 _ 24

모듈 삭제 _ 30

05 개발 생산성을 높여 줄 모던한 에디터 소개 _ 31

자바스크립트 작성에 필요한 에디터는? _ 31

Atom ― 풍부한 플러그인이 매력 _ 32

Sublime Text ― 환상적인 커스터마이징 기능으로 사랑에 빠지게 된다는 화제

Brackets ― HTML 편집에 특화된 빛나는 에디터 _ 36

통합 개발 환경에서의 자바스크립트 개발 _ 38

WebStorm ― 자바스크립트 개발에 특화된 개발 환경 _ 39

NetBeans ― 자바 뿐만 아니라 다양한 웹 개발 언어를 지원 _ 40

제2장 웹 데이터 수집 41

01 웹 페이지 다운로드 _ 42

가장 간단한 다운로드 방법 _ 42

Node.js로 다운로드해 보자 _ 42

Rhino/Narshon으로 다운로드해 보기 _ 46

02 HTML 해석(링크와 이미지 추출) _ 48

스크래핑이란? _ 48

HTML 파일 다운로드 _ 49

HTML 파일에서 링크 추출 _ 51

이미지 파일 추출 _ 55

03 사이트를 통째로 다운로드 _ 61

통째로 다운로드하는 이유 _ 61

프로그램을 만들어 보자 _ 62

04 XML/RSS 해석 _ 69

XML이란? _ 69

Node.js에서 XML을 다루는 방법 _ 71

RSS란? _ 76

XML/RSS 파싱에 cheerio-httpcli를 사용하는 방법 _ 79

05 정기적으로 다운로드 _ 82

정기적인 처리를 수행 _ 82

환율의 변동을 확인하는 API 사용 _ 83

리눅스/Mac OS X의 경우 _ 85

윈도우의 경우 _ 90

제3장 로그인이 필요한 웹사이트 크롤링 95

01 PhantomJS와 CasperJS _ 96

PhantomJS와 CasperJS에 관하여 _ 96

PhantomJS와 CasperJS 설치 _ 98

간단한 예제 프로그램 _ 99

플리커 이미지 검색 결과 캡처하기 _ 103

아이폰용 웹사이트 화면 캡처 _ 105

인자로 지정한 페이지를 캡처하는 도구 작성 _ 106

02 로그인 후의 데이터를 다운로드 _ 109

로그인이 필요한 경우 _ 109

티스토리에 로그인하기 _ 109

마우스 클릭 _ 113

03 DOM 파싱 방법과 CSS 선택자 _ 115

웹 브라우저의 개발자 도구 사용법 _ 115

CSS 선택자 지정 방법 _ 118

CSS 선택자 실전편 _ 120

04 Electron으로 데스크톱 애플리케이션 작성 _ 124

Electron이란? _ 124

Electron 설치 방법 _ 127

Electron으로 간단한 애플리케이션을 만드는 순서 _ 127

직접 준비한 HTML을 Electron에 표시 _ 130

메인 프로세스와 렌더링 프로세스 간의 통신 _ 132

05 Electron으로 스크린 캡처 _ 138

스크린샷을 찍는 제일 빠른 방법 _ 138

Electron으로 스크린샷을 찍는 방법 _ 138

미세한 조정을 위해 딜레이 주기 _ 142

캡처할 범위를 지정 _ 144

제4장 데이터 처리 및 저장 147

01 문자 코드와 호환 _ 148

문자 코드란? _ 148

자바스크립트의 문자 코드 _ 150

Node.js의 경우 _ 150

iconv-lite를 사용한 문자 코드 변환 _ 155

Rhino를 사용하는 경우 _ 156

02 정규 표현식을 사용한 데이터 변환 _ 157

정규 표현식이란? _ 157

자바스크립트에서의 정규 표현식 사용법 _ 158

03 데이터 형식의 기초 _ 166

웹에 있는 데이터 형식 _ 166

JSON 형식이란? _ 167

JSON의 개량판, JSON5 형식 _ 170

CSON 형식 _ 172

XML/RSS 형식 _ 174

YAML 형식 _ 177

INI 파일 형식 _ 181

CSV/TSV 파일 형식 _ 184

그 외의 형식 _ 188

04 커피스크립트 _ 190

왜 커피스크립트인가? _ 190

커피스크립트 설치 _ 191

프로그램 실행 방법 _ 191

커피스크립트의 기본 문법 _ 192

참과 거짓 _ 195

배열 _ 196

연산자 _ 197

제어 구문 _ 199

함수 작성 _ 203

객체지향 _ 206

05 데이터베이스 사용법 _ 210

왜 데이터베이스를 사용하는가? _ 210

관계형 데이터 모델과 NoSQL _ 210

관계형 데이터베이스 SQLite3 사용 _ 211

웹으로부터 다운로드하여 SQLite에 저장 _ 213

NoSQL LevelDB를 사용 _ 217

데이터를 LevelDB에 보관 _ 223

06 리포트 자동 생성 _ 227

리포트 자동 생성 _ 227

출력 형식 _ 228

PDF 작성 _ 230

엑셀 형식으로 작성 _ 238

Node.js + Ocegen 사용법 _ 238

Rhino와 Apache POI 사용법 _ 239

웹 API로 획득한 값을 엑셀에 쓰기 _ 242

제5장 한글 형태소 분석 245

01 형태소 분석에 관하여 _ 246

형태소 분석이란? _ 246

형태소 분석을 이용하는 방법 _ 247

mecab-ko의 설치 _ 248

02 특정 품사의 단어들을 추출 _ 251

Node.js에서 mecab-ko를 사용하는 방법 _ 251

프로그램을 정리하여 형태소 분석 모듈 작성 _ 254

특정 품사의 단어들을 추출하는 프로그램 _ 257

03 마르코프 체인을 이용한 문서 요약 _ 260

마르코프 체인을 이용한 문서 요약 _ 260

프로그램에 관하여 _ 264

04 간단한 문장 교정 도구 작성 _ 266

문장 교정 도구에 관하여 _ 266

05 단어의 출현 빈도 조사 _ 271

단어의 출현 빈도 조사 _ 271

제6장 크롤링을 위한 데이터 소스 277

01 유익한 데이터 소스 목록 _ 278

데이터 소스에 관하여 _ 278

SNS의 활용 _ 278

소셜 북마크 활용 _ 279

상품 정보 활용 _ 279

온라인 사전의 활용 _ 280

오프라인 사전 데이터 활용 _ 280

블로그 서비스 활용 _ 281

02 트위터 크롤링 _ 283

트위터란? _ 283

트위터 API 준비 _ 283

03 페이스북 _ 289

페이스북이란? _ 289

페이스북 API _ 289

04 네이버 API 사용 _ 297

네이버 API _ 297

05 아마존 API 사용 _ 302

아마존의 상품 정보 _ 302

API를 위한 개발자 계정 생성 _ 303

아마존의 도서 정보 검색 _ 308

06 플리커의 사진 다운로드 _ 311

플리커란? _ 311

API 키 획득 _ 312

플리커 API를 사용하는 프로그램 제작 _ 314

07 유튜브 동영상 다운로드 _ 319

유튜브란 무엇인가? _ 319

youtube-dl 설치 _ 320

유튜브 검색 _ 322

동영상을 검색하고 다운로드 _ 328

08 Yahoo! Finance에서 환율 및 주식 정보 수집 _ 331

Yahoo! Finance _ 331

FX·환율 정보 취득 _ 332

주가 정보 취득 _ 336

09 위키피디아 다운로드 _ 339

위키피디아란? _ 339

위키피디아의 타이틀 데이터베이스 만들기 _ 343

타이틀 데이터베이스 활용 _ 346

제7장 데이터의 분류, 예측과 머신러닝 351

01 데이터의 활용법에 관하여 _ 352

데이터를 어떻게 활용할 것인가? _ 352

데이터 마이닝이란? _ 352

데이터 마이닝의 기본은 예측, 분류, 연관 규칙 추출 _ 353

데이터 마이닝의 순서 _ 354

대표적인 데이터 마이닝 기법 _ 355

02 베이지안 필터를 활용한 분류 _ 356

베이지안 필터란? _ 356

나이브 베이즈 분류 알고리즘 _ 357

베이지안 필터 라이브러리 _ 359

03 이동 평균을 이용한 예측과 그래프 작성 _ 364

수요 예측에 관하여 _ 364

단순 이동 평균에 관하여 _ 365

지수 평활법에 관하여 _ 374

04 채팅 봇과 대화하기 _ 379

채팅 봇 _ 379

여기서 만들 채팅 봇 _ 380

05 서포트 벡터 머신으로 문자 인식(전편) _ 395

서포트 벡터 머신이란? _ 395

문자 인식에 도전 _ 397

06 서포트 벡터 머신으로 문자 인식(후편) _ 409

node-svm 사용법 _ 409

손으로 쓴 문자를 인식하는 프로그램 만들기 _ 411

잘못 인식하는 문제 해결 _ 420

제8장 데이터 시각화와 응용 427

01 구글 차트를 이용한 차트 작성 _ 428

구글 차트란? _ 428

파이 차트 그리기 _ 429

막대 그래프 그리기 _ 432

선 그래프 그리기 _ 434

차트의 종류와 매뉴얼 _ 437

02 D3.js로 자유도 높은 차트 작성 _ 440

D3.js ― 데이터 기반 도큐먼트 생성 라이브러리 _ 440

D3.js 설치 _ 441

막대 그래프 그리기 _ 442

막대 그래프의 스케일 자동 계산 _ 445

막대 그래프에 눈금 그리기 _ 446

꺾은선 그래프 그리기 _ 449

03 D3.js로 지도 그리기 _ 455

지도 정보 그리기 _ 455

TopoJSON으로 지도 데이터 표시 _ 456

지도 데이터 내려받기 _ 456

데이터 형식 변환 _ 457

D3.js로 대한민국 지도 그리기 _ 459

04 D3.js에서 파생된 라이브러리 _ 463

D3.js를 기반으로 개발된 라이브러리 _ 463

NVD3.js에 관하여 _ 464

C3.js 사용하기 _ 469

부록1 윈도우나 Mac OS X에 개발 환경 구축 475

Node.js 설치 _ 476

Rhino 설치 _ 478

Nashorn 설치 _ 480

부록2 HTML/XML의 PATH 파싱을 간단하게 수행 483

테이블 내의 정보 가져오기 _ 489

cheerio 마무리 _ 490

웹 크롤링 테크닉(자바스크립트와 Node.js를 이용한)

상품 수령 후 7일 이내에 신청하실 수 있습니다. 단, 제품이 표시·광고 내용과 다르거나, 계약과 다르게 이행된 경우는 제품 수령일부터 3개월 이내, 그 사실을 안 날 또는 알 수 있었던 날부터 30일 이내에 교환/반품이 가능합니다.

추가적으로 다음의 경우 해당하는 반품/교환은 신청이 불가능할 수 있습니다. 소비자의 책임 있는 사유로 상품 등이 멸실 또는 훼손된 경우 (단지, 상품 확인을 위한 포장 훼손 제외) 소비자의 사용 또는 소비에 의해 상품 등의 가치가 현저히 감소한 경우 시간의 경과에 의해 재판매가 곤란할 정도로 상품 등의 가치가 현저히 감소한 경우 복제가 가능한 상품 등의 포장을 훼손한 경우 소비자의 주문에 따라 개별적으로 생산되는 상품이 제작에 들어간 경우

JavaScript 웹 크롤링 하기

JavaScript 웹 크롤링 하기

목차

사전 준비 크롤러 구현 참고 자료

1. 사전 준비

1.1. npm 설치 및 프로젝트 시작하기 먼저 npm이 무엇인지 알아보자. npm은 node package manager를 의미하며 Java의 gradle 혹은 Python의 pip과 유사한 패키지 관리자이다.

https://nodejs.org/en/download/ 에서 운영체제별 인스톨러를 설치할 수 있다.

다음으로 package.json 파일을 생성해 보자.

npm init

묻는 내용에 일단은 계속 엔터를 치고 넘어가면 npm에 의해 개발 환경이 생성된다. 이후 npm을 통해 설치하는 모든 라이브러리들은 node_modules라는 디렉토리에 저장되며, package.json을 통해 관리할 수 있다.

1.2. 관련 라이브러리 설치

먼저 크롤러를 만들기 위해 필요한 라이브러리들을 정리해 보자.

우리는 axios와 cheerio를 사용해 크롤링을 할 것이다.

axios는 자바스크립트를 이용해 AJAX 리퀘스트를 할 수 있는 라이브러리이다. AJAX란 Asynchronous JavaScript and XML을 의미하는 것으로 비동기적으로 JSON이나 XML 등의 데이터를 받을 수 있는 방법을 의미한다.

cheerio는 JQuery처럼 DOM Selector 기능을 제공한다. axios로 받은 HTML 데이터에서 실제로 필요한 정보를 발라내는 데 사용할 것이다. 참고로, cheerio는 Python의 BeautifulSoup과 유사한 기능을 한다.

npm i axios cheerio

2. 크롤러 구현

2.1. axios와 cheerio import

이제 본격적으로 크롤러를 구현해보자.

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

먼저 axios와 cheerio를 import한다. Node는 require 함수의 인자를 node_modules에서 부터 디렉토리 명으로 검색하므로 구체적인 경로를 적지 않아도 설치한 라이브러리는 간단하게 import 할 수 있다.

2.2. 크롤링 대상 사이트 분석

다음으로 크롤링 하고자 하는 사이트를 살펴보자.

윤리적인 이유에서 본인의 블로그를 대상으로 한 크롤러를 짜 보고자 한다. chaewonkong.github.io에서 포스트 제목들을 가져오도록 해 보자.

body > main > div > section > ul > li > article > h2 > a

우리가 가져오고자 하는 포스트 제목들은 위와 같은 DOM 구조를 이루고 있다.

2.3. 코드 작성

이제 대충 구조를 알았으니 코드를 작성해 보자.

scraper.js

const axios = require ( ” axios ” ); const cheerio = require ( ” cheerio ” ); // axios를 활용해 AJAX로 HTML 문서를 가져오는 함수 구현 async function getHTML () { try { return await axios . get ( ” https://chaewonkong.github.io ” ); } catch ( error ) { console . error ( error ); } } // getHTML 함수 실행 후 데이터에서 // body > main > div > section > ul > li > article > h2 > a // 에 속하는 제목을 titleList에 저장 getHTML () . then ( html => { let titleList = []; const $ = cheerio . load ( html . data ); // ul.list–posts를 찾고 그 children 노드를 bodyList에 저장 const bodyList = $ ( ” ul.list–posts ” ). children ( ” li.item–post ” ); // bodyList를 순회하며 titleList에 h2 > a의 내용을 저장 bodyList . each ( function ( i , elem ) { titleList [ i ] = { title : $ ( this ) . find ( ” h2 a ” ) . text () }; }); return titleList ; }) . then ( res => console . log ( res )); // 저장된 결과를 출력

2.4. 실행

자 이제 코드를 실행해 보자.

node scraper.js

아래는 위 파일을 실행했을 경우의 결과다.

[ { title : ” Simple Chat App – React with Socket.IO ” }, { title : ” Sort method in JavaScript ” }, { title : ” Object Oriented Programming 1 – Basic Concepts ” }, { title : ” 웹과 HTTP ” }, { title : ” DOM과 Object Model ” }, { title : ” Node.js의 특징 ” }, { title : ” 사이트 간 스크립팅 ” }, { title : ” 파이썬(Python) 데코레이터(Decorator) ” }, { title : ” 카운팅 정렬(계수정렬, Counting Sort) – 백준 알고리즘 10989번 ” }, { title : ” 그래프를 활용한 알고리즘 01 – PICNIC ” }, { title : ” 자바스크립트에서 클로저 사용하는 법 ” }, { title : ” 분할정복을 이용한 자바스크립트 병합정렬 알고리즘 ” }, { title : ” 반응형(Responsive) 웹과 적응형(Adaptive) 웹, 그리고 모바일 퍼스트 디자인 ” }, { title : ” ES 2017 async와 await 사용법 ” }, { title : ” 자바스크립트 알고리즘 – n개의 원소 중 m개를 뽑는 모든 조합 ” }, { title : ” 리액트(React)란 무엇인가 ” }, { title : ” Express 서버와 React: Proxy 활용과 빌드 및 헤로쿠(Heroku) 배포 ” }, { title : ” N 팩토리얼에서 1의자리부터 연속하는 0의 개수 구하기 ” }, { title : ” 자바스크립트 이진탐색 알고리즘 ” }, { title : ” 타입스크립트(TypeScript)의 타입들 ” }, { title : ” 자바스크립트의 배열(Array in JavaScript) ” }, { title : ” 자바스크립트 함수 내 객체의 변경과 할당 ” }, { title : ” 쿠키(Cookie) 기반의 사용자 인증(Auth) ” }, { title : ” 파이썬 이진탐색 알고리즘 ” }, { title : ” JavaScript 참조 타입과 원시 타입 ” }, { title : ” 트랜스컴파일러(바벨)의 목적과 사용법 ” }, { title : ” React & Redux 1 ” }, { title : ” 파이썬으로 웹 크롤러 만들기 2 ” }, { title : ” 파이썬으로 웹 크롤러 만들기 1 ” } ];

이처럼 간단하게 Node.js와 axios, cheerio를 이용해 크롤러를 구현해 보았다.

Node.js에서도 excel 파일로 크롤링한 정보를 파싱(Parsing)하는 방법이 존재하고, 그런 라이브러리가 있다.

이 부분은 다음에 다뤄보기로 하고, 오늘은 이만 마치고자 한다.

3. 참고 자료

키워드에 대한 정보 자바 스크립트 크롤링

다음은 Bing에서 자바 스크립트 크롤링 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 Node.js 크롤링 – 인프런 사이트 크롤링하기

  • 자바스크립트
  • javascript
  • html
  • html5
  • 웹개발
  • 기초
  • 웹개발기초
  • 자바스크립트 기초
  • html 기초
  • 자바스크립트 팁
  • css
  • vue.js
  • react
  • react.js
  • angular
  • 안드로이드
  • ios
  • 제주도
  • 디지털노마드
  • 소프트웨어
  • node.js
  • node js
  • bootstrap
  • 부트스트랩
  • flutter
  • 플러터
  • vue
  • 인공지능
  • 머신러닝
  • 딥러닝
  • ai
  • 텐서플로우
  • tensorflow
  • 빅데이터
  • big data
  • svelte
  • sveltejs
  • svelte.js
  • mariadb
  • mongodb
  • 크롤링
  • crawling

Node.js #크롤링 #- #인프런 #사이트 #크롤링하기


YouTube에서 자바 스크립트 크롤링 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 Node.js 크롤링 – 인프런 사이트 크롤링하기 | 자바 스크립트 크롤링, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  완강기 설치 기준 | 소방시설관리사가 알려주는 완강기 점검 136 개의 정답

Leave a Reply

Your email address will not be published. Required fields are marked *