Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- grpahQL
- JS
- 알고리즘
- this
- 해커톤
- 엔퀸즈
- 포스기
- 취업
- array
- nqueens
- underscores
- 제일어려워
- 코드스테이츠
- react
- DOM
- 개발
- ftech
- underbar
- 리액트
- Instantiation Patterns
- 연습
- 초보
- JavaScript
- 공부
- method
- 클라이언트
- 코딩
- 일상
- 자바스크립트
- vscode
Archives
- Today
- Total
analogcoding
node.js crawling 간단한 예제 본문
코로나 현황판 크롤링
client
import React, { useEffect, useState } from "react";
import axios from "axios";
const App = () => {
const [data, setData] = useState(null);
useEffect(() => {
const getData = async () => {
const datas = await axios.get("http://localhost:4000/");
setData(datas.data);
};
getData();
}, []);
useEffect(() => {
console.log(data);
}, [data]);
if (data === null) {
return <div>Load..</div>;
} else {
console.log(data);
return (
<div>
{data.map((ele) => (
<>
<div>
현재 {ele.text}의 현황 : {ele.num}
</div>
<br />
</>
))}
</div>
);
}
};
export default App;
server
const express = require("express");
const cors = require("cors");
const cheerio = require("cheerio");
const axios = require("axios");
const PORT = 4000;
const app = express();
app.use(cors());
const getHtml = async () => {
try {
return await axios.get("http://ncov.mohw.go.kr/");
// 해당 사이트 html 태그 가져오기
} catch (error) {
console.error(error);
}
};
app.get("/", (req, res) => {
getHtml()
.then((html) => {
const $ = cheerio.load(html.data);
let parentTag = $("div.liveNum ul.liveNum li");
// 크롤링할 태그 찾기
let resultArr = [];
parentTag.each(function (i, elem) {
let itemObj = {
text: $(this).find("strong").text(),
num: $(this).find("span").text(),
};
resultArr.push(itemObj);
});
resultArr.forEach((elem) => {
console.log(`현재 ${elem._text}의 현황 : ${elem._num}`);
});
return resultArr;
})
.then((data) => res.send(data));
});
app.listen(PORT, () =>
console.log(`Example app listening at http://localhost:${PORT}`)
);
'Be well coding > Mine' 카테고리의 다른 글
typescript 에서 storybook 사용하기 (0) | 2020.04.28 |
---|---|
Git branch 이름 변경 (0) | 2020.04.22 |
react - ROSLIB 사용기 (0) | 2020.04.17 |
react 에서 naver MAP api 사용 (0) | 2020.03.16 |
TS 에서 interface , type 을 가져와서 사용할 때 Eslint error (0) | 2020.03.08 |
Comments