반응형

개발 50

[Node js]웹 크롤러 만들기2-웹 페이지 정보 추출 (형태소 분석기를 이용하여 단어 추출)

📢이 글에서 구현할 내용 우리는 먼저 특정 URL을 Seed(시작 위치)로 입력받는다. 해당 URL의 HTML을 긁어온다. 긁어온 페이지에 있는 URL들을 수집한다.(URL은 중복 제거한다.) 깊이 우선 탐색 또는 넓이 우선 탐색 방법으로 "2."와 "3."을 반복한다. 시작 위치와 연관되지 않는다고 판단되면 더는 진행하지 않는다. 기어 다니는(크롤링) 행위를 다하고 나서 정리한 URL 테이블을 하나씩 방문해서 HTML 정보를 받아온다. 형태소 분석기를 사용해서 HTML에서 단어들을 추출하여 정리한다. 위 순서는 "웹 크롤러 만들기 0"에서 정리한 내용이다. 파란색으로 칠한 부분을 이번 글에서 구현해보자. 🎤형태소 분석(mecab-ya) mecab은 리눅스, 맥 환경에서는 문제없이 설치/사용할 수 있지만..

개발/Node js 2021.10.11

[Node js]웹 크롤러 만들기1-웹 페이지 기어 다니기-BFS 넓이 우선 탐색(Crawl+Scrape)

📢이 글에서 구현할 내용 우리는 먼저 특정 URL을 Seed(시작 위치)로 입력받는다. 해당 URL의 HTML을 긁어온다. 긁어온 페이지에 있는 URL들을 수집한다.(URL은 중복 제거한다.) 깊이 우선 탐색 또는 넓이 우선 탐색 방법으로 "2."와 "3."을 반복한다. 시작 위치와 연관되지 않는다고 판단되면 더는 진행하지 않는다. 기어 다니는(크롤링) 행위를 다하고 나서 정리한 URL 테이블을 하나씩 방문해서 HTML 정보를 받아온다. 형태소 분석기를 사용해서 HTML에서 단어들을 추출하여 정리한다. 위 순서는 "웹 크롤러 만들기 0"에서 정리한 내용이다. 파란색으로 칠한 부분을 이번 글에서 구현해보자. 🧨프로젝트 초기 생성 $ mkdir crawler $ cd crawler $ npm init 모듈 ..

개발/Node js 2021.10.11

[Node js]웹 크롤러 만들기0-웹 크롤러란? 우리가 만들 것은?

🕸웹 크롤러란? 만들기 전에 무엇을 만들지 알고 가기 위해서 의미에 대해서 먼저 정리를 해보자. 흔히들 크롤러(Crawler), 스크래퍼(Scraper), 파서(Parser) 3가지에 대해서 다르게 의미 생각하고 이야기하는 경우가 있다. 사전적인 의미로만 간단히 생각해보면 무엇을 하는지 유추할 수 있다. Crawl : 기어가다. Scrape : 긁어내다. Parse : 분석하다. 크롤러는 웹을 기어 다니는 놈, 웹 페이지를 스크래퍼는 긁어 오는 놈, 파서는 웹 페이지를 분석하는 놈을 의미 한다. 하지만 웹 크롤러는 단순히 기어 다니는 행위만 하는 프로그램을 말하는 건 아니고, 웹을 돌아다니면서 웹 페이지(html/css/js)를 긁어오고 거기에 무슨 내용들이 있는지 분석을 하는 놈을 의미한다. 스크래퍼와..

개발/Node js 2021.10.11

[Node js]배열,객체 데이터 파일로 쓰기/읽기-fs,path

📝코드설명 파일로 저장 및 읽기 위해 fs 모듈을 사용했고, 윈도우 또는 리눅스에서 모두 경로 구분 토큰('/', '\')이 자동으로 구분 되도록 path 모듈을 사용했다. fs 모듈의 함수는 모두 동기 방식으로 동작하도록 ~Sync 함수들을 사용했으며, 저장하려는 파일의 경로 폴더들이 있는지 existsSync함수로 확인하고 없다면 생성 되도록 mkdirSync함수에 {recursive:true} 옵션을 줬다. 저장할때는 객체 또는 배열이 문자열로 변환되서 저장하도록 JSON.stringfy 함수를 사용했으며, 반대로 읽을때는 저장한 문자열을 다시 JSON 형태로 변경 되도록 JSON.parse 함수를 사용했다. const fs = require('fs'); const path = require('pa..

개발/Node js 2021.10.11

[JS]찾기 함수-find/includes/indexOf 사용법 및 비교-예제/자바스크립트/javascript

🎈includes 배열이 특정 element를 포함하고 있는지 판별한다. return 값은 있으면 true, 없으면 false를 반환 한다. const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3));// true console.log(arr.includes(10));// false const startIndex = 6; console.log(arr.includes(3, startIndex));// false (시작위치를 정할 수 있다.) 🎈indexOf 특정 element를 첫번째 인덱스 값을 return한다. 존재하지 않으면 -1을 return 한다. const arr = [1, 2, 3, 4, 5]; console.log(arr.indexOf(3));//..

개발/Javascript 2021.10.08

[JS]반복문 for/for in,forEach,map,filter,reduce-자바스크립트 /javascript

💡목표 자바스크립트에는 반복문을 사용하기 위한 방법이 여러가지가 있다. 사용방법을 예시 코드를 보며 이해해보자. 각 특징을 이해하고, 어느 상황에 사용하는지에 대해서 알아보자. 🎈일반 for loop 일반적인 반복문 방법으로 단순하고 속도가 가장 빠르다. const arr = [1, 2, 3]; for (let i = 0; i < arr.length; i++) { console.log(arr[i]); } 🎈for in object의 key의 이름을 알 수 있으며, object같이 index로 되어 있지 않아 일반 반복문을 사용할 수 없을때 key의 이름을 이용하여 사용한다. let obj = { name: "이름", age: 10, address: "서울" }; for (let key in obj) { ..

개발/Javascript 2021.10.08

[C++] "[[no_unique_address]]" 란? C++20 attribute

💡[[no_unique_address]] 란 "[[no_unique_address]]"는 C++20부터 추가된 attribute로 "Empty Class 타입의 멤버를 가질 때 독립적인 주소를 가질 필요 없다."는 의미를 가진다. Empty Class를 멤버변수를 가지고 있어도 크기에 포함되지 않는다. 앞서 살펴 보았던 EBCO와 결과가 같은 것을 볼 수 있다. [C++] EBCO란? 💡EBCO란? Empty Base Class Optimization의 약어로, Empty Class로 부터 상속을 받는 경우 Base Class인 Empty Class의 크기는 0 btye로 최적화 된다는 말이다. * Empty Class에 대해서 알고 싶은 분은아래 링크.. jaegeun.tistory.com [C++] ..

개발/C++ 2021.10.08

[C++] EBCO란?

💡EBCO란? Empty Base Class Optimization의 약어로, Empty Class로 부터 상속을 받는 경우 Base Class인 Empty Class의 크기는 0 btye로 최적화 된다는 말이다. * Empty Class에 대해서 알고 싶은 분은아래 링크에서 확인해주세요. [C++] Empty Class란? 목표 Empty Class 특징에 대해서 알아보고, 어떠한 것들이 Empty Class를 말하는지 예시를 통해서 알아보자. Empty Class 특징 size가 1byte (non-static) member 변수가 없다. 가상 함수가 없다. 가상 상속을 하.. jaegeun.tistory.com 📝예시 코드(Example) 아래와 같이 Empty Class를 상속 받은 경우는 0 b..

개발/C++ 2021.10.08

[C++]Tag Dispatching(꼬리표 분배)이란?-Empty Class 이용한 예(example)

💡목표 Tag Dispatching이란 무엇인지 사용하는 이유가 무엇인지 알아보고, 왜 Empty Class를 사용해야하는지 예시(example)를 보며 알아보자. * Empty Class에 대해서 알고 싶은 분은아래 링크에서 확인해주세요. [C++] Empty Class란? 목표 Empty Class 특징에 대해서 알아보고, 어떠한 것들이 Empty Class를 말하는지 예시를 통해서 알아보자. Empty Class 특징 size가 1byte (non-static) member 변수가 없다. 가상 함수가 없다. 가상 상속을 하.. jaegeun.tistory.com 🔦Tag Dispatching(꼬리표 분배)이란? Empty Class를 꼬리표로 사용해서 함수 오버로딩을 하는 기술을 말한다. 📝Empt..

개발/C++ 2021.10.08
반응형