[nodejs][cheerio] cheerio 를 이용하여 HTML 파싱하기 - 에어코리아 미세먼지 정보 파싱

2016. 1. 14. 17:12·프레임워크/[JS] node.js

node.js 에서 HTML을 파싱하기 위해서 cheerio를 이용한다.

Fast, flexible, and lean implementation of core jQuery designed specifically for the server


cheerio의 설명은 위와 같이 jQuery를 서버사이드에 맞게 수정한 것이다.

따라서 jQuery와 유사하게 동작하므로 기존에 사용하던 사람은 좀더 편안하게 사용할 수 있다.


cheerio - https://github.com/cheeriojs/cheerio


아래의 예제는 에어코리아 사이트의 미세먼지 예보를 파싱한 것이다.

http://www.airkorea.or.kr/dustForecast



var request = require("request");
var cheerio = require('cheerio')

var requestOptions  = { method: "GET"
						,uri: "http://www.airkorea.or.kr/dustForecast"
						,headers: { "User-Agent": "Mozilla/5.0" }
					};

request(requestOptions, function(error, response, body) {
	// 웹사이트 로드
	$ = cheerio.load(body);

	info_list = []
	colspan_index = []
	
	// 미세먼지 예보 정보를 가지고있는 첫번째 테이블을 확인
	$('.table_04.mb10').first().find('tr').each(function (index, elem) {
		

		// 지역 구분 입력
		if(index == 0){

			$(this).find('th').each(function (index, elem) {

				info_list.push({ "name" : $(this).text().trim() })
				
				if($(this).attr('colspan') == '2') {
					colspan_index.push(index);
					info_list.push({ "name" : $(this).text().trim() })
				}
			});
		}

		// 경기, 강원 구분 입력
		if(index == 1){
			$(this).find('th').each(function (index, elem) {
				info = info_list[colspan_index[0] + index];
				info["name"] = info["name"] + " " + $(this).text();
				info_list[colspan_index[0] + index] = info;
			});
		}

		// 미세면지, PM10, PM2.5 데이터 입력
		if(index >= 2){

			// text 만 구분하여 입력한다. 
			info_str = $(this).text().split("\n");
			info_index = 0
			info_key = ""
			for(index in info_str) {
				info = info_str[index].trim()
				if( info != "" ) {
					if (info_index == 0){
						info_key = info
					} else {
						dust_info = info_list[info_index];
						dust_info[info_key]	= info
					}

					info_index++;
				}
			}
		}
	});

	// 결과 출력
	for (index in info_list) {
		console.log(info_list[index])
	}
}); 
반응형
저작자표시 비영리 (새창열림)

'프레임워크 > [JS] node.js' 카테고리의 다른 글

node.js의 LTS 버전과 Stable 버전의 차이  (1) 2016.01.27
node.js 의 장점과 단점  (0) 2016.01.22
request 모듈을 이용하여 HTML 가져오기  (1) 2016.01.11
node.js 란?  (0) 2015.12.24
[설정] npm 프록시 설정  (1) 2015.12.21
'프레임워크/[JS] node.js' 카테고리의 다른 글
  • node.js의 LTS 버전과 Stable 버전의 차이
  • node.js 의 장점과 단점
  • request 모듈을 이용하여 HTML 가져오기
  • node.js 란?
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    하둡
    HDFS
    파이썬
    nodejs
    yarn
    Tez
    하이브
    다이나믹
    Linux
    airflow
    java
    SPARK
    Hadoop
    정올
    Python
    S3
    hbase
    ubuntu
    error
    백준
    bash
    oozie
    mysql
    알고리즘
    오류
    k8s
    build
    HIVE
    AWS
    emr
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[nodejs][cheerio] cheerio 를 이용하여 HTML 파싱하기 - 에어코리아 미세먼지 정보 파싱
상단으로

티스토리툴바