Haskell:
HTML Parsen

Hoe:

Laten we onze handen vuil maken met wat code, door de tagsoup bibliotheek te gebruiken om een eenvoudig HTML-snippet te parsen. Zorg er eerst voor dat je het pakket van Hackage installeert via cabal install tagsoup.

import Text.HTML.TagSoup

-- Laten we een eenvoudig HTML-snippet parsen
let html = "<html><body><p>Hallo, Haskell!</p></body></html>"

-- Parse het
let parsedHtml = parseTags html

-- Zoek naar paragrafen
let paragraphs = partitions (~== "<p>") parsedHtml

-- Haal de tekst uit de eerste paragraaf
let firstParagraphText = innerText $ head paragraphs

-- Voila!
print firstParagraphText

Voorbeelduitvoer:

"Hallo, Haskell!"

Dit snippet parseert een HTML-string, zoekt naar paragraaftags en print de tekst die in de eerste paragraaf staat. Netjes en simpel.

Diepere Duik

HTML parsen in Haskell is niet altijd zo gestroomlijnd geweest als vandaag de dag. Er was eens een tijd dat mensen hun eigen parsers maakten of worstelden met bibliotheken op een lager niveau, HTML parsend alsof het het Wilde Westen was.

Tegenwoordig heb je opties. tagsoup, zoals we hebben gebruikt, is geweldig wanneer de HTML-structuur meer suggestie dan regel is - het is tolerant voor rommelige HTML uit de echte wereld. Als je op zoek bent naar meer nauwkeurigheid, kunnen html-conduit gecombineerd met xml-conduit uit het conduit pakket jouw ding zijn. Ze gebruiken een streamingbenadering en zijn kieskeuriger over structuur.

Onder de motorkap zetten deze bibliotheken HTML om in een boom of een soep van tags. Ze bieden handige functies om deze gegevens te bevragen en te manipuleren, waardoor HTML-parsing minder hoofdpijn geeft. Beschouw ze als een schatkaart, waarbij X de paragraaftag markeert.

Zie Ook