많은 양의 HTML 페이지를 구문 분석 (서버 측)해야합니다.
우리 모두는 regexp가 여기에 갈 길이 아님에 동의합니다.
자바 스크립트가 HTML 페이지를 파싱하는 기본 방법 인 것 같지만 그 가정은 자바 스크립트가 브라우저 내부에 가지고있는 모든 DOM 기능을 가진 서버 측 코드에 의존합니다.
Node.js에 이러한 기능이 내장되어 있습니까?
서버 측에서 HTML을 구문 분석하는이 문제에 대한 더 나은 접근 방법이 있습니까?
많은 양의 HTML 페이지를 구문 분석 (서버 측)해야합니다.
우리 모두는 regexp가 여기에 갈 길이 아님에 동의합니다.
자바 스크립트가 HTML 페이지를 파싱하는 기본 방법 인 것 같지만 그 가정은 자바 스크립트가 브라우저 내부에 가지고있는 모든 DOM 기능을 가진 서버 측 코드에 의존합니다.
Node.js에 이러한 기능이 내장되어 있습니까?
서버 측에서 HTML을 구문 분석하는이 문제에 대한 더 나은 접근 방법이 있습니까?
답변:
npm 모듈 jsdom 및 htmlparser 를 사용하여 Node.JS에서 DOM을 만들고 구문 분석 할 수 있습니다.
기타 옵션은 다음과 같습니다.
이 모든 옵션 중에서 표준 W3C DOM 접근 자 메서드를 사용하고 클라이언트와 서버 모두에서 코드를 재사용 할 수 있기 때문에 Node.js 옵션을 사용하는 것을 선호합니다. BeautifulSoup의 방법이 W3C dom과 더 비슷하기를 바라며, XSLT를 작성하기 위해 HTML을 XHTML로 변환하는 것은 단순한 가학 적이라고 생각합니다.
Cheerio를 사용하십시오 . jsdom만큼 엄격하지 않으며 스크래핑에 최적화되어 있습니다. 보너스로 이미 알고있는 jQuery 선택기를 사용합니다.
❤ 익숙한 구문 : Cheerio는 핵심 jQuery의 하위 집합을 구현합니다. Cheerio는 jQuery 라이브러리에서 모든 DOM 불일치 및 브라우저 크랙을 제거하여 정말 멋진 API를 보여줍니다.
ϟ 매우 빠름 : Cheerio는 매우 간단하고 일관된 DOM 모델로 작동합니다. 결과적으로 구문 분석, 조작 및 렌더링이 매우 효율적입니다. 예비 엔드-투-엔드 벤치 마크에 따르면 cheerio는 JSDOM보다 약 8 배 빠릅니다.
❁ 엄청나게 유연함 : Cheerio는 @ FB55의 용서하는 htmlparser를 둘러 쌉니다. Cheerio는 거의 모든 HTML 또는 XML 문서를 구문 분석 할 수 있습니다.
jsdom
그것을 위해 너무 느립니다 : /
htmlparser2를 사용 하면 더 빠르고 간단합니다. 다음 사용 예를 참조하십시오.
https://www.npmjs.org/package/htmlparser2#usage
그리고 여기에 라이브 데모 :
FB55의 Htmlparser2 가 좋은 대안 인 것 같습니다.
jsdom은 실제 화면 스크래핑 작업을 수행하기에는 너무 엄격하지만, beautifulsoup은 나쁜 마크 업에 질식하지 않습니다.
node-soupselect 는 Python의 beautifulsoup을 nodejs로 포팅하고 아름답게 작동합니다.