Inhaltsverzeichnis
2. Unterstützung für CSS-Stileinstellungen
3. CSS 3-Selektorunterstützung
4. Leistungsstarke Skalierbarkeit
Heim Web-Frontend HTML-Tutorial Detaillierte Erklärung einer perfekten HTML-Parsing-Engine (Jumony)

Detaillierte Erklärung einer perfekten HTML-Parsing-Engine (Jumony)

May 04, 2017 pm 02:57 PM

Vielleicht denken viele Leute, dass der aktuelle HTML-Parser ausreicht und selbst einfache reguläre Ausdrücke bereits die Anforderungen der Bearbeitung von HTML-Dokumenten erfüllen können. Ja, die meisten HTML-Dokumente im Internet erfüllen tatsächlich die XHTML-Spezifikationen und für deren Analyse ist kein leistungsstarker Parser erforderlich. Aber ein leistungsstarker Parser ist eine Sache und ein perfekter Parser eine andere.

Jumony Core bietet zunächst eine nahezu perfekte HTML-Parsing-Engine, und ihre Parsing-Ergebnisse kommen denen des Browsers unendlich nahe. Unabhängig davon, ob es sich um Elemente ohne End-Tags, Elemente mit optionalen End-Tags, Tag-Attributen oder CSS-Selektoren und -Stile handelt, werden alle legalen und illegalen HTML-Dokumente vom Browser analysiert, und Jumony analysiert sie in das, was sie sind. Mit anderen Worten, die Ergebnisse der Jumony-Analyse sind dieselben wie die Ergebnisse der Browser-Analyse, sodass Sie sich keine Sorgen mehr darüber machen müssen, ob das HTML-Dokument erkannt werden kann. Wenn der Browser es lesen kann, kann Jumony es verstehen.

Es gibt nur einen Schritt zwischen Perfektion und Leistung, aber ein perfekter Parser ermöglicht es Ihnen, sich nie um das HTML-Quelldokument kümmern zu müssen.

Das Folgende ist eine unvollständige Liste der vom Jumony-Parser unterstützten Funktionen

特性 例子
孤立的<解析为文本< 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“
CDataElement <script>if ( 1<a ) warning( "< p>" );</script>
"script", "style", "textarea", "title"  
Vorformatiertes Element
 🎜><span class="font5"></pre&gt ;</span><span class="font6"></span></span></td></tr><tr>Verwenden Sie einfache Anführungszeichen für Attributwerte <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>Verwenden Sie keine Anführungszeichen für Attributwerte<td class="xl67" width="371"><span style="font-family:courier new,courier;font-size:12px;"></span></td><a href=#></span></span></td>
<td class="xl68" width="371"><span style="font-family:courier new,courier;font-size:12px;"> </span></td>
</tr>
<tr>Attributwert fehlt (aber mit Gleichheitszeichen)<td class="xl67" width="371"><span style="font-family:courier new,courier;font-size:12px;"></span></td><a href=><td class="xl68" width="371">
<span style="font-family:courier new,courier;font-size:12px;"></span> </td>
</tr>
<tr>Vor dem Attributwert steht ein Leerzeichen<td class="xl67" width="371"><span style="font-family:courier new,courier;font-size:12px;"></span></td><a href= "test.html"><td class="xl68" width="371"><span style="font-family:courier new,courier;font-size:12px;"></span></td>
</tr>
<tr>Parsen<td class="xl67" width="371">HTML<span style="font-family:courier new,courier;font-size:12px;"></span>Deklaration</td>
<td class="xl68" width="371"><span style="font-family:courier new,courier;font-size:12px;"></span></td><!DOCTYPE html></tr>
<tr> <td class="xl72" width="371"><span style="font-family:courier new,courier;font-size:12px;"> <span class="font6"><p><br>Es kann nicht nur HTML aus Text analysieren, die API von Jumony kann auch direkt Dokumentanalysen aus dem Internet abrufen und Codierungen basierend auf HTTP-Headern automatisch identifizieren: </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>new JumonyParser().LoadDocument( "www.php.cn/" ).Find( ".post_item a.titlelnk" )
Nach dem Login kopieren
Nach dem Login kopieren

Und derzeit ist es das einzige von Jumony Das HTML-Parsing des Open-Source-Projekts HtmlAgilityPack wird seit langem nicht mehr aktualisiert. Nach so vielen Jahren gibt es immer noch Probleme beim Parsen der grundlegendsten

-Elemente.

2. Unterstützung für CSS-Stileinstellungen

Das bloße Parsen von HTML bringt keinen großen Nutzen. Wie oben erwähnt, können die meisten HTML-Dokumente tatsächlich mit zweitklassiger Analyse analysiert werden sogar einfache reguläre Ausdrücke, warum brauchen wir also Jumony?

Die Antwort ist, dass eine HTML-Engine mehr ist als nur das Parsen der DOM-Struktur.

Stellen Sie sich dieses Szenario vor: Ich muss für den Anzeigestil eines Elements einen Nichtwert festlegen. Im Browser benötigen wir nur ein einfaches element.style.display = „none“, um unsere Anforderungen zu erfüllen. Jetzt haben wir das benötigte DOM über den Parser erhalten, aber müssen wir noch Strings verketten, um den Stil festzulegen?

Keine Notwendigkeit, Jumony unterstützt das Parsen von CSS-Stilen und sogar einige CSS-Stil-Abkürzungsregeln können erkannt werden. In Jumony ist das Festlegen eines Stils für ein Element so einfach wie im Browser:

element.Style( "display", "none" )
Nach dem Login kopieren

Schauen wir uns dieses Beispiel noch einmal an:

, was passiert, wenn wir padding-left: 0px für dieses Element festlegen?

In Jumony wird das Ergebnis wie folgt aussehen:

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

Sehen Sie, das Füllattribut wird auf magische Weise automatisch erweitert.

3. CSS 3-Selektorunterstützung

CSS-Selektor ist eine beliebte Abfragesprache in der HTML-Welt. Er ist einfach und leistungsstark und wird von vielen Browsern unterstützt. Jumony unterstützt auch fast vollständige CSS3-Selektoren (mit Ausnahme von Laufzeit-Pseudoklassen und Pseudoobjekten). Mit Hilfe von Selektoren können wir in HTML leicht die Objekte finden, die uns interessieren. Schnappen Sie sich zum Beispiel alle Artikeltitel auf der Blog-Homepage:

new JumonyParser().LoadDocument( "www.php.cn/" ).Find( ".post_item a.titlelnk" )
Nach dem Login kopieren
Nach dem Login kopieren

Erfassen, analysieren, auswählen, alles auf einmal. Mit nur einem einfachen Code können wir die von uns erfassten Daten auf der Konsole ausgeben:

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

Liste der von Jumony unterstützten CSS3-Selektoren:

Auswahl Beschreibung
* Alle Elemente auswählen
p a Nachkommenelemente auswählen
p>a Untergeordnetes Element auswählen
p+a Angrenzende Elemente auswählen
p~a Nachfolgeelement auswählen
[attr] Attribut existiertAuswählen
[attr=value] Attributwert stimmt genau überein
[attr~ =value] Attributwert ungefähre Übereinstimmung
[attr^=value] Attributwert beginnt mit Übereinstimmung
[attr*=value] Der Attributwert enthält Matching
[attr$=value] Der Attributwert endet mit Matching
[attr!=value] Attributwert negative Übereinstimmung
:nicht Negative Pseudoklasse
:only-child Nur ​​untergeordnete Element-Pseudoklasse
: nur vom Typ Nur ​​Typ-Pseudoklasse
:empty Leere Element-Pseudoklasse
:nth-child Strukturierte Pseudoklasse
:nth-last-child Strukturierte Pseudoklasse
:nth-of-type Strukturierte Pseudoklasse
:nth-last-of-type Strukturierte Pseudoklasse
:first-child Strukturierte Pseudoklasse
:last-child Strukturierte Pseudoklasse
: erster Typ Strukturierte Pseudoklasse
:last-of-type Strukturierte Pseudoklasse


4. Leistungsstarke Skalierbarkeit

In Jumony Core 3 bietet es Benutzern maximale Skalierbarkeit. Implementieren Sie Ihren eigenen Parser, übertragen Sie andere DOM-Modelle auf die Jumony-API, erfinden Sie Ihre eigene CSS-Selektor-Pseudoklasse oder ändern Sie sogar Ihre eigene API, z. B. den jQuery-Stil.

Jumony Core verfügt über viele abgeleitete Projekte, z. B. das Crawlen von Websites, das Bereitstellen von APIs im jQuery-Stil, das Entwickeln von Websites, das Erstellen von MHT-Dateien, das Hinzufügen von CSS-Selektorunterstützung für HAP-Analyseergebnisse usw. Diese Projekte erfordern alle die Leistungsfähigkeit Dank der Skalierbarkeit von Jumony Core kann es leistungsstarke Funktionen ausüben.

[Verwandte Empfehlungen]

1. Kostenloses HTML-Online-Video-Tutorial

2. HTML-Entwicklungshandbuch

3. php.cn Original-HTML5-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung einer perfekten HTML-Parsing-Engine (Jumony). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Zweck des & lt; Fortschritts & gt; Element? Was ist der Zweck des & lt; Fortschritts & gt; Element? Mar 21, 2025 pm 12:34 PM

Der Artikel erörtert den HTML & lt; Progress & gt; Element, Absicht, Styling und Unterschiede vom & lt; Meter & gt; Element. Das Hauptaugenmerk liegt auf der Verwendung & lt; Fortschritt & gt; Für Aufgabenabschluss und & lt; Meter & gt; für stati

Was ist der Zweck des & lt; datalist & gt; Element? Was ist der Zweck des & lt; datalist & gt; Element? Mar 21, 2025 pm 12:33 PM

Der Artikel erörtert den HTML & lt; Datalist & gt; Element, das die Formulare verbessert, indem automatische Vorschläge bereitgestellt, die Benutzererfahrung verbessert und Fehler reduziert werden.Character Count: 159

Was ist der Zweck des & lt; Meter & gt; Element? Was ist der Zweck des & lt; Meter & gt; Element? Mar 21, 2025 pm 12:35 PM

Der Artikel erörtert das HTML & lt; Meter & gt; Element, verwendet zur Anzeige von Skalar- oder Bruchwerten innerhalb eines Bereichs und seine gemeinsamen Anwendungen in der Webentwicklung. Es differenziert & lt; Meter & gt; von & lt; Fortschritt & gt; und Ex

Was ist das Ansichtsfenster -Meta -Tag? Warum ist es wichtig für reaktionsschnelles Design? Was ist das Ansichtsfenster -Meta -Tag? Warum ist es wichtig für reaktionsschnelles Design? Mar 20, 2025 pm 05:56 PM

In dem Artikel wird das Ansichtsfenster -Meta -Tag erörtert, das für das reaktionsschnelle Webdesign auf mobilen Geräten unerlässlich ist. Es wird erläutert, wie die ordnungsgemäße Verwendung eine optimale Skalierung von Inhalten und Benutzerinteraktion gewährleistet, während Missbrauch zu Design- und Zugänglichkeitsproblemen führen kann.

Was ist der Zweck des & lt; iframe & gt; Etikett? Was sind die Sicherheitsüberlegungen bei der Verwendung? Was ist der Zweck des & lt; iframe & gt; Etikett? Was sind die Sicherheitsüberlegungen bei der Verwendung? Mar 20, 2025 pm 06:05 PM

Der Artikel erörtert das & lt; iframe & gt; Der Zweck von Tag, externe Inhalte in Webseiten, seine gemeinsamen Verwendungen, Sicherheitsrisiken und Alternativen wie Objekt -Tags und APIs einzubetten.

Ist HTML für Anfänger leicht zu lernen? Ist HTML für Anfänger leicht zu lernen? Apr 07, 2025 am 12:11 AM

HTML ist für Anfänger geeignet, da es einfach und leicht zu lernen ist und schnell Ergebnisse sehen kann. 1) Die Lernkurve von HTML ist glatt und leicht zu beginnen. 2) Beherrschen Sie einfach die grundlegenden Tags, um Webseiten zu erstellen. 3) hohe Flexibilität und kann in Kombination mit CSS und JavaScript verwendet werden. 4) Reiche Lernressourcen und moderne Tools unterstützen den Lernprozess.

Die Rollen von HTML, CSS und JavaScript: Kernverantwortung Die Rollen von HTML, CSS und JavaScript: Kernverantwortung Apr 08, 2025 pm 07:05 PM

HTML definiert die Webstruktur, CSS ist für Stil und Layout verantwortlich, und JavaScript ergibt eine dynamische Interaktion. Die drei erfüllen ihre Aufgaben in der Webentwicklung und erstellen gemeinsam eine farbenfrohe Website.

Was ist ein Beispiel für ein Start -Tag in HTML? Was ist ein Beispiel für ein Start -Tag in HTML? Apr 06, 2025 am 12:04 AM

AnexampleofaTartingTaginHtmlis, die, die starttagsaresesinginhtmlastheyinitiateElements, definetheirtypes, andarecrucialForstructuringwebpages und -konstruktionsthedoms.

See all articles