Node.js의 HTML 파서

nodejs 에 Ruby의 nokogiri 와 같은 것이 있습니까? 사용자 친화적 인 HTML 파서를 의미합니다.

Node.js 모듈 페이지에서 일부 파서를 보았지만 예쁘고 신선한 것을 찾을 수 없습니다.



답변

DOM 을 빌드 하려면 jsdom 을 사용할 수 있습니다 .

또한 cheerio 가 있으며 jQuery 인터페이스가 있으며 이전 버전의 jsdom보다 훨씬 빠르지 만 요즘에는 성능이 비슷합니다.

스트리밍 파서 인 htmlparser2를 살펴보고 싶을 것입니다. 벤치 마크에 따르면 다른 브라우저 보다 빠르며 기본적으로 DOM이없는 것 같습니다. DOM을 생성하는 핸들러와 함께 제공되기 때문에 DOM을 생성 할 수도 있습니다. 이것은 cheerio가 사용하는 파서입니다.

parse5 도 좋은 해결책처럼 보입니다. WHATWG를 준수하며 (이 업데이트 시점 의 마지막 커밋 이후 11 일) 상당히 활동적이며 jsdom , AngularPolymer에서 사용 됩니다.

웹 스크랩을 위해 HTML을 구문 분석 하려면 YQL 1을 사용할 수 있습니다 . 이 노드 모듈 그것을 위해가. YQL HTML이 정적 웹 사이트에서 온 경우 자신의 코드와 처리 능력이 아닌 서비스에 의존하기 때문에 최상의 솔루션이라고 생각 합니다. 웹 사이트의 robot.txt에서 페이지를 허용하지 않으면 작동하지 않지만 YQL은 작동하지 않습니다.

긁어 모으려 는 웹 사이트가 동적 인 경우 phantomjs 와 같은 헤드리스 브라우저를 사용해야 합니다. phantomjs를 고려하고 있다면 casperjs도 살펴 보십시오. 그리고 SpookyJS를 사용하여 노드에서 casperjs를 제어 할 수 있습니다 .

phantomjs 옆에있다 zombiejs을 . nodejs에 포함 할 수없는 phantomjs와 달리 zombiejs는 노드 모듈 일뿐입니다.

후자의 솔루션 에는 nettuts +가 있습니다.


(1) 8 월 2014 년 이후, YQL에 대한 요구 사항입니다 YUI 라이브러리는 더 이상 적극적으로 유지하지 소스


답변

https://github.com/tmpvar/jsdom을 사용해보십시오 -HTML을 제공하고 DOM을 제공합니다.