JavaScript:
Analiza składniowa HTML

Jak to zrobić:

Parsujmy HTML za pomocą API DOMParser w JavaScript.

const parser = new DOMParser();
const htmlString = `<p>Witaj, świecie!</p>`;
const doc = parser.parseFromString(htmlString, 'text/html');
console.log(doc.body.textContent); // Wynik: Witaj, świecie!

Teraz spróbujmy wyłuskać coś bardziej specyficznego, jak element z klasą:

const htmlString = `<div><p class="greeting">Cześć, znowu!</p></div>`;
const doc = parser.parseFromString(htmlString, 'text/html');
const greeting = doc.querySelector('.greeting').textContent;
console.log(greeting); // Wynik: Cześć, znowu!

Dogłębna analiza

Parsowanie HTML istnieje tak długo, jak sieć. Początkowo było to zadanie przeglądarek—parsowały one HTML, aby wyświetlić strony internetowe. Z czasem programiści chcieli mieć dostęp do tego procesu, co doprowadziło do powstania API takich jak DOMParser.

Alternatywy? Jasne. Mamy biblioteki takie jak jQuery i narzędzia jak BeautifulSoup dla Pythona. Ale natywny DOMParser JavaScriptu jest szybki i wbudowany, nie potrzeba dodatkowych bibliotek.

Jeśli chodzi o implementację, kiedy parsujesz HTML za pomocą DOMParser, tworzony jest obiekt Document. Możesz myśleć o nim jako o hierarchicznym modelu twojego HTML. Gdy go masz, możesz nim nawigować i manipulować tak samo jak z normalnym DOM strony internetowej.

Oto rzecz—parsowanie może napotkać problemy na źle sformułowanym HTML. Przeglądarki są wyrozumiałe, ale DOMParser już niekoniecznie. Dlatego dla skomplikowanych zadań lub niechlujnego HTML, biblioteki stron trzecich mogą zrobić lepszą robotę przy sprzątaniu.

Zobacz również

  • Dokumentacja MDN na temat API DOMParser: MDN DOMParser
  • Możliwości parsowania w jQuery: jQuery.parseHTML()
  • Cheerio, szybka, elastyczna i oszczędna implementacja podstawowego jQuery dla serwera: Cheerio.js
  • Dla parsowania poza JS: biblioteka BeautifulSoup dla Pythona: Beautiful Soup