Notice
Recent Posts
Recent Comments
Link
헬창 개발자
Node.js를 이용한 웹파싱 본문
웹 파싱
- 크롤링
자동화된 방법으로 웹을 탐색하는 작업을 말하며 여러 개의 인터넷 사이트 페이지를 수집해서 분류하는 것 - 파싱
어떤 페이지에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보를 가공하는 작업 - 스크래핑
http를 통해 웹 사이트의 내용을 긁어와 원하는 형태로 가공하는 모든 작업을 말하며 크롤링과 파싱도 일종의 스크래핑이다.
Node.js에서 크롤링 및 파싱을 하려면 axios 모듈과 chreerio 모듈이 필요하다.
chreerio는 axios의 결과로 받은 데이터에서 DOM Selector를 사용해 필요한 데이터만 추출하는 데 사용할 수 있다.
npm install cheerio
npm install axios
cheerio 함수
- load()
html 문자열을 cheerio 객체로 반환한다. - children()
html selector를 파라미터로 받은 뒤 chreerio 객체에서 선택된 html 문자열의 해당하는 모든 태그를 반환한다. - each()
콜백 함수를 파리미터를 받아 태그들이 담긴 배열을 순회하면서 콜백 함수를 실행한다. - find()
html selector를 문자열로 받아 해당 태그를 반환한다.
파싱해볼 사이트에 들어가서 베스트 셀러를 크롤링을 해보겠다.
F12를 눌러 html 구조를 확인해보면 책제목의 태크는 다음처럼 되어있다.
div > ul > li > a
<a> 태그 안에있는 링크와 <b> 태그의 텍스트 데이터를 가져오도록 코드를 작성해보자
const axios = require("axios");
const cheerio = require("cheerio");
const getHtml = async () => {
try {
return await axios.get("<https://www.aladin.co.kr/shop/common/wbest.aspx?BranchType=1&start=we>");
} catch (error) {
console.error(error);
}
};
getHtml()
.then(html => {
let ulList = [];
const $ = cheerio.load(html.data);
const $bodyList = $("div.ss_book_list");
$bodyList.each(function (i, elem) {
ulList[i] = {
bookList: $(this).find('a.bo3 b').text(),
url: $(this).find('a.bo3').attr('href'),
};
});
const data = ulList.filter(n => n.bookList);
return data;
})
.then(res => console.log(res));
'공부방' 카테고리의 다른 글
Node.js 환경에서 NoSQL : MongoDB 사용하기 (0) | 2022.09.22 |
---|---|
Node.js와 데이터베이스 (0) | 2022.09.04 |
API???????? (3) | 2022.08.21 |
express 미들웨어 (0) | 2022.08.19 |
express 모듈을 사용해 서버 만들기 (1) | 2022.08.18 |
Comments