html parsing / 페이지 파서 / 파싱 / 다루기 / 크롤 / crawling scrapper /
xml parser
parsers
- GitHub - libxmljs/libxmljs: libxml bindings for v8 javascript engine
- Visual Studio 필요: node-gyp 에서 Visual Studio 를 사용해서 build 를 하게 된다.
- xpath 를 사용할 수 있다.
- GitHub - jsdom/jsdom: A JavaScript implementation of various web standards, for use with Node.js
- cheerio : jquery 처럼 사용할 수 있다.
- 내부적으로 inikulin/parse5 와 fb55/htmlparser2 를 사용한다고 한다.
- Leonidas-from-XIV/node-xml2js: XML to JavaScript object converter.
- 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);
댓글 없음:
댓글 쓰기