Lua:
HTML 파싱
방법:
Lua에는 HTML을 파싱하기 위한 내장 라이브러리가 없지만, LuaHTML
이나 LuaXML
을 통한 libxml2
바인딩을 활용할 수 있습니다. HTML을 파싱하기 위한 인기 있는 접근 방법은 HTML5 규격을 준수하는 간단하면서도 직관적인 파싱 기능을 제공하는 lua-gumbo
라이브러리를 사용하는 것입니다.
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 문서의 구조를 파싱하고 이해하는 능력을 통해 태그나 속성에 기반한 특정 요소를 추출하는 과정을 단순화합니다.