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文档的结构的能力简化了基于标签或属性提取特定元素的过程。