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

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

零下一度
풀어 주다: 2017-05-04 14:57:37
원래의
7354명이 탐색했습니다.

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

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

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

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

特性 例子
孤立的<解析为文本< a应当解析为< a
孤立的>解析为文本 >应当解析为>
标记属性(没有值的属性)
元素丢失结束标签

测试链接

可选结束标签元素
"body", "colgroup", "dd", "dt", "head", "html", "li", "option", "p", "tbody", "td", "tfoot", "th", "thead", "tr"

abc

123

无结束标签元素
"area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "isindex", "link", "meta" , "param", "wbr", "bgsound", "spacer", "keygen"
CData요소 <script>if ( 1<a ) 경고( "< p>" );</script>
"스크립트", "스타일", "텍스트 영역", "제목"  
사전 형식화된 요소
 ;<span class="font5"></span><span class="font6"></span></span></td>
</tr>속성 값에 작은따옴표 사용 ​​<tr>
<td class="xl67" width="371">
<span style="font-family:courier new,courier;font-size:12px;"></span>< </td><td class="xl68" width="371"><span style="font-family:courier new,courier;font-size:12px;"></span></td></tr>속성 값에 따옴표를 사용하지 마세요<tr><td class="xl67" width="371"><span style="font-family:courier new,courier;font-size:12px;"></span><a href=#></td>
<td class="xl68" width="371"> <span style="font-family:courier new,courier;font-size:12px;"></span>
</td>
</tr>속성 값 누락(등호 포함)<tr>
<td class="xl67" width="371">
<span style="font-family:courier new,courier;font-size:12px;"></span><a href=></td>
<td class="xl68" width="371"><span style="font-family:courier new,courier;font-size:12px;"> </span></td>
</tr>속성값 앞에 공백이 있습니다<tr>
<td class="xl67" width="371">
<span style="font-family:courier new,courier;font-size:12px;"></span><a href= "test.html"></td>
<td class="xl68" width="371"><span style="font-family:courier new,courier;font-size:12px;"></span></td>
</tr>파싱<tr>HTML<td class="xl67" width="371"><span style="font-family:courier new,courier;font-size:12px;">선언</span></td>
<td class="xl68" width="371">
<span style="font-family:courier new,courier;font-size:12px;"></span><!DOCTYPE html></td>
</tr> <tr><td class="xl72" width="371"> <span style="font-family:courier new,courier;font-size:12px;"><p><br>Jumony의 API는 텍스트에서 HTML을 구문 분석할 수 있을 뿐만 아니라 인터넷에서 문서 분석을 직접 가져와 HTTP 헤더를 기반으로 자동으로 인코딩을 식별할 수 있습니다. </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:html;toolbar:false;">new JumonyParser().LoadDocument( "m.sbmmt.com/" ).Find( ".post_item a.titlelnk" )
로그인 후 복사
로그인 후 복사

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

요소를 구문 분석하는 데 여전히 문제가 있습니다.

2. CSS 스타일 설정 지원

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

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

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

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

element.Style( "display", "none" )
로그인 후 복사

이 예를 다시 살펴보겠습니다.

이 요소에 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( "m.sbmmt.com/" ).Find( ".post_item a.titlelnk" )
로그인 후 복사
로그인 후 복사

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

 foreach( var title = new JumonyParser().LoadDocument( "m.sbmmt.com/" ).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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿