Lua:
Analiza składniowa HTML

Jak to zrobić:

Lua nie posiada wbudowanej biblioteki do przetwarzania HTML, ale można wykorzystać biblioteki stron trzecich takie jak LuaHTML lub korzystać z powiązań z libxml2 przez LuaXML. Popularnym podejściem jest użycie biblioteki lua-gumbo do przetwarzania HTML, która zapewnia proste w użyciu, zgodne z HTML5 możliwości przetwarzania.

Instalacja lua-gumbo:

Najpierw upewnij się, że lua-gumbo jest zainstalowane. Zazwyczaj można je zainstalować za pomocą luarocks:

luarocks install lua-gumbo

Podstawowe przetwarzanie z lua-gumbo:

Oto jak możesz przetworzyć prosty fragment HTML i wydobyć z niego dane za pomocą lua-gumbo:

local gumbo = require "gumbo"
local document = gumbo.parse([[<html><body><p>Witaj, świecie!</p></body></html>]]

local p = document:getElementsByTagName("p")[1]
print(p.textContent)  -- Wyjście: Witaj, świecie!

Zaawansowany przykład - wydobycie linków:

Aby wydobyć atrybuty href ze wszystkich znaczników kotwicy (<a>) w dokumencie HTML:

local gumbo = require "gumbo"
local document = gumbo.parse([[
<html>
<head><title>Przykładowa strona</title></head>
<body>
  <a href="http://przyklad.com/1">Link 1</a>
  <a href="http://przyklad.com/2">Link 2</a>
  <a href="http://przyklad.com/3">Link 3</a>
</body>
</html>
]])

for _, element in ipairs(document.links) do
    if element.getAttribute then  -- Upewnij się, że to Element i ma atrybuty
        local href = element:getAttribute("href")
        if href then print(href) end
    end
end

-- Przykładowe wyjście:
-- http://przyklad.com/1
-- http://przyklad.com/2
-- http://przyklad.com/3

Ten fragment kodu iteruje przez wszystkie linki w dokumencie i wyświetla ich atrybuty href. Możliwość przetwarzania przez bibliotekę lua-gumbo i zrozumienie struktury dokumentu HTML upraszcza proces wydobywania konkretnych elementów na podstawie ich znaczników lub atrybutów.