>웹 프론트엔드 >HTML 튜토리얼 >완벽한 HTML 파싱 엔진(Jumony)에 대한 자세한 설명

완벽한 HTML 파싱 엔진(Jumony)에 대한 자세한 설명

零下一度
零下一度원래의
2017-05-04 14:57:377363검색

아마도 많은 사람들은 현재의 HTML 파서만으로 충분하며 간단한 정규식이라도 이미 HTML 문서 조작 요구 사항을 충족할 수 있다고 생각할 것입니다. 예, 인터넷에 있는 대부분의 HTML 문서는 실제로 대부분 XHTML 사양을 충족하며 해당 문서의 구문 분석에는 강력한 구문 분석기가 필요하지 않습니다. 그러나 강력한 파서와 완벽한 파서는 별개입니다.

Jumony Core는 먼저 거의 완벽한 HTML 파싱 엔진을 제공하며, 파싱 결과는 브라우저의 파싱 결과와 무한히 가깝습니다. 종료 태그가 없는 요소, 선택적 종료 태그가 있는 요소, 태그 속성 또는 CSS 선택기와 스타일 등 모든 합법적인 HTML 문서와 불법적인 HTML 문서는 브라우저에서 있는 그대로 구문 분석됩니다. 즉, Jumony 구문 분석 결과는 브라우저 구문 분석 결과와 동일하므로 더 이상 HTML 문서를 인식할 수 있는지 걱정할 필요가 없습니다. 브라우저에서 읽을 수 있으면 Jumony도 이해할 수 있습니다.

완벽함과 강력함 사이에는 한 단계만 있지만 완벽한 파서는 HTML 소스 문서에 대해 걱정할 필요가 전혀 없습니다.

다음은 Jumony 파서가 지원하는 기능의 불완전한 목록입니다

속성 값에 작은따옴표 사용 ​​속성 값 누락(등호 포함)속성값 앞에 공백이 있습니다파싱HTML
特性 例子
孤立的7f19db43d97d2d4008bb10f655c09c49解析为文本 3499910bf9dac5ae3c52d5ede7383485>5db79b134e9f6b82c0b36e0489ee08ed应当解析为3499910bf9dac5ae3c52d5ede7383485>5db79b134e9f6b82c0b36e0489ee08ed
标记属性(没有值的属性) f396c7ee6581b8a2c1feb962c201109c
元素丢失结束标签 e388a4556c0f65e1904146cc1a846bee43091600189d2e5d073500b021ca54e8测试链接94b3e26ee717c64999d7867364b1b4a3
可选结束标签元素
"body", "colgroup", "dd", "dt", "head", "html", "li", "option", "p", "tbody", "td", "tfoot", "th", "thead", "tr"
e388a4556c0f65e1904146cc1a846beeabce388a4556c0f65e1904146cc1a846bee123
无结束标签元素
"area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "isindex", "link", "meta" , "param", "wbr", "bgsound", "spacer", "keygen"
4faf7b57895b870867b99beee44351ac
CData요소 3f1c4e4b6b16bbbd69b2ee476dc4f83aif ( 12dbf512f7920cbbe1dcaeb732be43a12" );2cacc6d41bbb37262a98f745aa00fbf0
"스크립트", "스타일", "텍스트 영역", "제목"  
사전 형식화된 요소 e03b848252eb9375d56be284e690e873 ;
db67e1717e266ff7a2af7f975ef00f91
2de933bd81cf0e954926b4b4a48640c3
05797ff6bfecf7b84525904378753179
선언 8b05045a5be5764f313ed5b9168a17e6


Jumony의 API는 텍스트에서 HTML을 구문 분석할 수 있을 뿐만 아니라 인터넷에서 문서 분석을 직접 가져와 HTTP 헤더를 기반으로 자동으로 인코딩을 식별할 수 있습니다.

new JumonyParser().LoadDocument( "www.php.cn/" ).Find( ".post_item a.titlelnk" )

그리고 현재 Jumony에 이어 두 번째입니다. HTML 구문 분석 오픈 소스 프로젝트 HtmlAgilityPack은 오랜 시간 동안 업데이트를 중단했지만 가장 기본적인 ff9c23ada1bcecdd1a0fb5d5a0f18437 요소를 구문 분석하는 데 여전히 문제가 있습니다.

2. CSS 스타일 설정 지원

단순히 HTML을 완벽하게 파싱하는 것만으로는 큰 이점을 얻을 수 없습니다. 위에서 언급한 것처럼 실제로 대부분의 HTML 문서는 2급 파싱으로 분석할 수 있습니다. 간단한 정규 표현식도 있는데 왜 Jumony가 필요한가요?

HTML 엔진은 단순히 DOM 구조를 구문 분석하는 것 이상이라는 것이 정답입니다.

다음 시나리오를 고려해보세요. 요소의 표시 스타일에 없음 값을 설정해야 합니다. 브라우저에서는 요구 사항을 충족하기 위해 간단한 element.style.display = "none"만 필요합니다. 이제 파서를 통해 필요한 DOM을 얻었지만 스타일을 설정하기 위해 문자열을 연결해야 합니까?

필요하지 않습니다. Jumony는 CSS 스타일 구문 분석을 지원하며 일부 CSS 스타일 약어 규칙도 인식할 수 있습니다. Jumony에서는 요소의 스타일을 설정하는 것이 브라우저에서처럼 간단합니다.

element.Style( "display", "none" )

이 예를 다시 살펴보겠습니다. 7cd3a19f7494deb2fc114a1203d0dae994b3e26ee717c64999d7867364b1b4a3 이 요소에 padding-left: 0px를 설정하면 어떻게 될까요?

Jumony에서 결과는 다음과 같습니다.

<p style="padding-left: 0px; padding-right: 5px; padding-top:5px; padding-bottom: 5px"></p>

보세요. padding 속성이 마법처럼 자동으로 확장됩니다.

3. CSS 3 선택기 지원

CSS 선택기는 HTML 세계에서 널리 사용되는 쿼리 언어로, 간단하고 강력하며 많은 브라우저에서 지원됩니다. Jumony는 또한 거의 완전한 CSS3 선택기를 지원합니다(런타임 의사 클래스 및 의사 객체 제외). 선택기의 도움으로 HTML에서 관심 있는 객체를 쉽게 찾을 수 있습니다. 예를 들어, 블로그 파크

new JumonyParser().LoadDocument( "www.php.cn/" ).Find( ".post_item a.titlelnk" )

홈페이지에 있는 모든 기사 제목을 캡처, 분석, 선택을 한 번에 가져오면 간단한 코드만으로 캡처한 데이터를 콘솔에 출력할 수 있습니다. :

 foreach( var title = new JumonyParser().LoadDocument( "www.php.cn/" ).Find( ".post_item a.titlelnk" ) )
  Console.WriteLine( title.InnerText() );

Jumony에서 지원하는 CSS3 선택기 목록:

선택기 설명
* 모든 요소 선택
p a 하위 요소 선택
p>a 하위 요소 선택
p+a 인접 요소 선택
p~a 후속 요소 선택
[attr] 속성 존재 선택
[attr=value] 속성 값이 정확히 일치함
[attr~ =value] 속성 값 근사 일치
[attr^=value] 속성 값은 일치로 시작합니다
[attr*=value] 속성 값에는 다음이 포함됩니다.
[attr$=value] 속성 값은
[attr!=value] 속성 값 부정 일치
:not 부정 의사 클래스
:only-child 하위 요소 의사 클래스만
:only-of-type 유형 의사 클래스만
:empty 빈 요소 의사 클래스
:n번째-자식 구조화된 의사 클래스
:n번째-마지막-자식 구조화된 의사 클래스
:n번째 유형 구조화된 의사 클래스
:n번째 마지막 유형 구조화된 의사 클래스
:first-child 구조화된 의사 클래스
:last-child 구조화된 의사 클래스
: 최초 유형 구조화된 의사 클래스
:last-of-type 구조화된 의사 클래스


4. 강력한 확장성

Jumony Core 3에서는 HTML 사양을 사용자 정의할 수 있습니다. 자신만의 파서를 구현하고, 다른 DOM 모델을 Jumony API에 접목하고, 자신만의 CSS 선택기 의사 클래스를 만들거나, 심지어 jQuery 스타일과 같은 자신만의 API를 변경할 수도 있습니다.

Jumony Core에는 웹사이트 크롤링, jQuery 스타일 API 제공, 웹사이트 개발, MHT 파일 만들기, HAP 구문 분석 결과에 대한 CSS 선택기 지원 추가 등과 같은 많은 파생 프로젝트가 있습니다. 이러한 프로젝트에는 모두 강력한 Jumony Core의 확장성을 통해 강력한 기능을 발휘할 수 있습니다.

[관련 추천]

1. 무료 HTML 온라인 동영상 튜토리얼

html 개발 매뉴얼

3. php.cn 원본 html5 동영상 튜토리얼

위 내용은 완벽한 HTML 파싱 엔진(Jumony)에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.