Czy zauważyliście, że analizatory (parsery) kodu HTML w nazwie mają czasami angielski rzeczownik soup (zupa)? Np. jsoup (JAVA) lub Beautiful Soup (Python). O co chodzi?
Dawno, dawno temu, za siedmioma górami, za siedmioma rzekami, za siedmioma morzami byli sobie webmasterzy (kto tego pojęcia jeszcze używa?) do tworzenia stron używali najprostszych edytorów od vima po notatnik. W edytorach tych kolorowanie składni, walidacja w trybie edycji lub automatyczne formatowanie nie istniały. Właśnie wtedy pojawiło się dziwne pojęcie tzw. zupy znaczników czy też tagów (ang. tag soup). Oznacza ono po prostu niepoprawny strukturalnie lub składniowo kod HTML. Przykładowo otwarte, ale nie zamknięte znaczniki albo „poplątane” (jak makaron) dwa typy znaczników.
Przykładowo:
<p><b>Zły kod. Naprawdę zły, czyli <i>tag soup
Jak widać, żaden z użytych powyżej trzech znaczników nie został zamknięty. Poniżej natomiast mamy „poplątane” znaczniki (kolejność zamykania znaczników powinna być odwrotna od kolejności ich otwierania):
<p><b>Zły kod.</p> Naprawdę zły, czyli tag soup</b>
Analizatory składniowe HTML (parsery), które potrafiły radzić sobie z zupą znaczników, nazywane były tag soup parser. Dlatego w wielu językach programowania moduły / biblioteki analizujące HTML i radzące sobie z „HTML-podobnym” kodem miały w nazwach (jako sufiks lub prefiks) słowo soup. I tak w technologii JAVA mamy świetny analizator jsoup, a w Pythonie Beautiful Soup.
Chcesz wiedzieć więcej o tzw. scraperach, które muszą używać tag soup parsery? Kup książkę „Python i AI dla e-commerce„, gdzie poświęciłem temu tematowi jeden solidny rozdział.
Obserwuj mnie