Lua:
解析HTML

如何操作:

Lua没有内置的HTML解析库,但你可以利用第三方库如LuaHTML,或通过LuaXML利用libxml2的绑定。一个流行的方法是使用lua-gumbo库来解析HTML,它提供了一个直接、符合HTML5标准的解析能力。

安装lua-gumbo:

首先,确保安装了lua-gumbo。你通常可以使用luarocks来安装它:

luarocks install lua-gumbo

使用lua-gumbo进行基本解析:

这里展示了如何使用lua-gumbo解析一个简单的HTML片段并从中提取数据:

local gumbo = require "gumbo"
local document = gumbo.parse[[<html><body><p>你好,世界!</p></body></html>]]

local p = document:getElementsByTagName("p")[1]
print(p.textContent)  -- 输出:你好,世界!

进阶示例 - 提取链接:

要从HTML文档中提取所有锚标签(<a>元素)的href属性:

local gumbo = require "gumbo"
local document = gumbo.parse([[
<html>
<head><title>示例页面</title></head>
<body>
  <a href="http://example.com/1">链接1</a>
  <a href="http://example.com/2">链接2</a>
  <a href="http://example.com/3">链接3</a>
</body>
</html>
]])

for _, element in ipairs(document.links) do
    if element.getAttribute then  -- 确保它是一个元素并且具有属性
        local href = element:getAttribute("href")
        if href then print(href) end
    end
end

-- 样例输出:
-- http://example.com/1
-- http://example.com/2
-- http://example.com/3

这段代码片段遍历文档中的所有链接并打印它们的href属性。lua-gumbo库解析并理解HTML文档的结构的能力简化了基于标签或属性提取特定元素的过程。