Heim >Web-Frontend >HTML-Tutorial >Detaillierte Erklärung einer perfekten HTML-Parsing-Engine (Jumony)
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
特性 | 例子 | |||||||||||||||||||||||||||||||||||||||||||||||||
孤立的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 | |||||||||||||||||||||||||||||||||||||||||||||||||
CDataElement | 3f1c4e4b6b16bbbd69b2ee476dc4f83aif ( 174eb2758262aaf98a01c2e0773130c8e" );2cacc6d41bbb37262a98f745aa00fbf0 | |||||||||||||||||||||||||||||||||||||||||||||||||
"script", "style", "textarea", "title" | ||||||||||||||||||||||||||||||||||||||||||||||||||
Vorformatiertes Element | e03b848252eb9375d56be284e690e873 🎜>9969da5a29d8787f5186b8a06c8f1c42 | |||||||||||||||||||||||||||||||||||||||||||||||||
2de933bd81cf0e954926b4b4a48640c3 | ||||||||||||||||||||||||||||||||||||||||||||||||||
05797ff6bfecf7b84525904378753179 | ||||||||||||||||||||||||||||||||||||||||||||||||||
HTMLDeklaration | 8b05045a5be5764f313ed5b9168a17e6 | |||||||||||||||||||||||||||||||||||||||||||||||||
new JumonyParser().LoadDocument( "www.php.cn/" ).Find( ".post_item a.titlelnk" ) 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 ff9c23ada1bcecdd1a0fb5d5a0f18437-Elemente. 2. Unterstützung für CSS-StileinstellungenDas 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" ) Schauen wir uns dieses Beispiel noch einmal an: 7cd3a19f7494deb2fc114a1203d0dae994b3e26ee717c64999d7867364b1b4a3, 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> Sehen Sie, das Füllattribut wird auf magische Weise automatisch erweitert. 3. CSS 3-SelektorunterstützungCSS-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" ) 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() ); Liste der von Jumony unterstützten CSS3-Selektoren:
4. Leistungsstarke SkalierbarkeitIn 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] |
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!