[컴] nodejs 에서 xml/html parser 들

 html parsing / 페이지 파서 / 파싱 / 다루기 / 크롤 / crawling scrapper /

xml parser

parsers

  1. GitHub - libxmljs/libxmljs: libxml bindings for v8 javascript engine
    • Visual Studio 필요: node-gyp 에서 Visual Studio 를 사용해서 build 를 하게 된다.
    • xpath 를 사용할 수 있다.
  2. GitHub - jsdom/jsdom: A JavaScript implementation of various web standards, for use with Node.js
  3. cheerio : jquery 처럼 사용할 수 있다.
  4. Leonidas-from-XIV/node-xml2js: XML to JavaScript object converter.
  5. fb55/htmlparser2: Forgiving HTML and XML parser

jsdom

기본적으로 browser 의 query 명령어들을 제공한다. 개인적으로 가장 사용하기 좋은 듯 하다.

import axios, { AxiosResponse } from "axios";
import { JSDOM } from "jsdom";


(async () => {

    const url = "http://test.com/index.html";
    const response = await axios.get(url)


    const content = response.data;

    const jdom = new JSDOM(content);
    
    console.log(jdom!.window!.document!.querySelector('div.section-list-area')!.textContent);
    ...
}

node-xml2js

기본적으로 parsing 만 해준다. parse 해준 tree 를 json (object) 으로 만들어준다. 반대로 json 을 xml 로 만들어주는 builder 도 제공한다.

dsummersl/node-xml2js-xpath 를 이용하면 parse 된 node 를 xpath 를 이용해서 다를수 있게 해준다. 하지만 아직 완전하진 않다.

import axios, { AxiosResponse } from "axios";
import { parseStringPromise } from "xml2js";


(async () => {

    const url = "http://test.com/index.html";
    const response = await axios.get(url)


    const content = response.data;
    // `strict: false` 는 html 을 다룰 때 필요하다.
    const result = await parseStringPromise(content, {strict: false});
    ...
}

htmlparser2

이것은 자료가 많이 없고, 생각과 다르게 동작해서 조금 건들다 말았다.


import axios, { AxiosResponse } from "axios";
import { parseDocument, DomUtils } from "htmlparser2";


(async () => {

    const url = "http://test.com/index.html";
    const response = await axios.get(url)


    const content = response.data;

    const dom = parseDocument(content);
    const res = DomUtils.getElements({
        tag_name: 'h3',
        tag_contains: 'h3-test-text',
    }, dom, true);
    console.log(dom);

Reference

  1. GitHub - Leonidas-from-XIV/node-xml2js: XML to JavaScript object converter.
  2. GitHub - dsummersl/node-xml2js-xpath: Search xml2js JSON documents with XPath query strings.

댓글 없음:

댓글 쓰기