개발로그

JavaScript 크롤링 : 뉴스 본문

IT

JavaScript 크롤링 : 뉴스

clohoon 2023. 9. 19. 23:44
다음 뉴스를 크롤링해보자!

 

 

크롤링 결과

 

 

📌 시작하기 전에

1. 강의에서 사용하는 url이 존재하지 않아서 https://entertain.daum.net/ranking/popular 로 대체했다.

 

2. axios, cheerio 패키지를 설치한다.

npm install axios cheerio

 

3. 아래와 같은 오류가 발생하면 npm i axios@0.21 을 터미널에 입력하여 해결할 수 있다.

import axios from './lib/axios.js';
       ^^^^^
       
SyntaxError: Unexpected identifier

 

 

 

📌 npm이란?

npm은 대표적인 자바스크립트 패키지 매니저 중 하나로, 외부 라이브러리/패키지의 설치 및 삭제, 관리를 해 주는 도구이다. npm을 이용해 무언가를 설치했다면 package.json, package-lock.json, node_modules 폴더가 생성된다.

 

  • package.json 파일은 프로젝트 정보와 의존성을 관리해주는 문서이다.
  • package-lock.json 파일은 node_modules 디렉터리나 package.json 파일이 변경될 때마다 자동으로 생성되고 업데이트되는 파일이다.
  • node_modules 폴더는 npm으로 다운로드한 외부 라이브러리들이 담기는 폴더이다.

 

 

📌 HTTP Request Method

HTTP는 클라이언트와 서버 간 데이터를 주고 받을 때 사용하는 프로토콜이다. HTTP Request Method에는 대표적으로 GET 요청과 POST 요청이 있다.

 

  • GET 요청은 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드이다.
  • POST 요청은 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 메서드이다.

 

 

📌 뉴스 크롤링 코드

// 모듈 가져오기
const axios = require('axios');
const cheerio = require('cheerio');

function crawler(){
	const url = `https://entertain.daum.net/ranking/popular`;
	
	// axios로 get 요청 보내기
	axios.get(url)
	  .then(res => {
		if(res.status == 200) {
			let crawledNews = [];
			// [ {title: "....", img: "...."}, {}, {} ]
			
			// res.data에 있는 tag를 cheerio로 검색하여 변수에 담기
			const $ = cheerio.load(res.data);
			const $newsList = $('#mArticle > div.ranking_list > ol > li');
			
			$newsList.each(function(i){
				crawledNews[i] = {
					title : $(this).find('li > div > div > div > strong > a').text(),
					img : $(this).find('li > a > img').attr('src')
				};
			});
			console.log(crawledNews);
		}
	});
}

crawler();

 

'IT' 카테고리의 다른 글

socket.io를 이용한 채팅 앱 구현  (0) 2023.10.09
Node.js에 대해 알아보자!  (0) 2023.09.30
객체지향 자바스크립트  (0) 2023.09.29
웹 게임 제작 : 공 피하기  (0) 2023.09.17
프레임워크 없이 CRUD 구현하기  (0) 2023.09.12