1. 라이브러리 개요
Kanna는 Swift 언어 환경(macosOS, iOS, tvOS, watchOS, Linux 등)에서 XML 및 HTML 문서를 파싱하고 탐색하기 위한 오픈 소스 라이브러리다[1]. Nokogiri(루비용 XML/HTML 파서)에서 영감을 받아 제작되었으며, 다음과 같은 주요 기능을 제공한다.
- XPath 1.0 지원: 복잡한 문서 검색을 위한 강력한 XPath 쿼리 사용 가능[1].
- CSS3 선택자 지원:
doc.css("selector")
방식으로 요소 선택[1]. - 네임스페이스 처리: XML 네임스페이스를 인식하고 검색에 활용.
- 속성 추출: HTML/XML 요소의 속성(
href
,src
,alt
등)을 쉽게 취득 가능[2]. - 크로스 플랫폼 호환: Apple 플랫폼 및 Linux 전반 지원[1].
- 테스트 스위트: 안정적 동작을 보장하는 포괄적 테스트 내장[1].
설치 방법
- CocoaPods:
pod 'Kanna', '~> 5.2.2'
- Carthage:
github "tid-kijyun/Kanna" ~> 5.2.2
- Swift Package Manager:
.package(url: "https://github.com/tid-kijyun/Kanna.git", from: "5.2.2")
사용 예시
import Kanna
let html = "<html><body><a href='https://example.com'>Link</a></body></html>"
if let doc = try? HTML(html: html, encoding: .utf8) {
// CSS 선택자
if let link = doc.at_css("a") {
print(link.text ?? "") // "Link"
print(link["href"] ?? "") // "https://example.com"
}
// XPath
for li in doc.xpath("//ul/li") {
print(li.text ?? "")
}
}
위 예에서는 HTML을 파싱해 CSS·XPath 방식으로 요소 및 속성을 추출하는 과정을 보여준다.
2. 주요 릴리스 히스토리
아래는 CHANGELOG.md
및 GitHub Releases를 기반으로 한 주요 버전·날짜·변경사항 요약이다.
버전 | 출시일 | 주요 변경사항 |
---|---|---|
6.0.0 | 2025-01-15 | – Swift 6 완전 지원 – 동시성 검사 엄격 모드 호환[1] |
5.2.2 | 2024-04-10 | – Carthage/SPM 안정성 개선 – macOS 헤더 검색 경로 업데이트 |
5.2.0 | 2023-11-05 | – CSS 선택자 처리 성능 최적화 – XML 네임스페이스 버그 수정 |
5.1.0 | 2022-07-22 | – Linux 지원 강화 – 의존성 최소화 |
5.0.0 | 2021-03-18 | – Swift 5 대응 – Package Manager 중심 설치 지원 |
4.x → 5.0 | 2021 | – Swift 4 호환성 유지 – API 안정화 |
초기 1.x–3.x | 2014–2018 | – XPath/CSS 기반 기본 파싱 기능 구축[1] |
- v6.0.0 (2025-01-15)
Swift 6 호환성을 보장하고, Apple의 새로운Strict Concurrency Check
모드(타깃 대상 이상)에서도 빌드가 통과하도록 업데이트됨[1]. - v5.2.2 (2024-04-10)
Carthage, SPM 설치 시 발생하던 헤더 탐색 문제 수정 및 xcode 11.3 이전 버전용 libxml2 경로 설정 안내 개선. - v5.2.0 (2023-11-05)
CSS 선택자 쿼리 최적화로 검색 속도 향상. XML 네임스페이스 처리 관련 주요 버그 수정. - v5.1.0 (2022-07-22)
Linux 환경에서의 빌드/테스트 지원 강화. 외부 의존성(pkg-config
등) 최소화. - v5.0.0 (2021-03-18)
Swift 5 릴리즈 대응. SPM(스위프트 패키지 매니저)을 통한 설치 방법 정식 지원. - 이전 버전(1.x–4.x)
2014년부터 XPath 및 CSS 선택자 기반의 기본 파싱 기능을 제공하며, 여러 플랫폼 지원을 차례로 확대[1].
3. 요약
Kanna는 Swift 프로젝트에서 HTML/XML 파싱·탐색을 위해 널리 쓰이는 경량 라이브러리다. XPath 및 CSS 선택자를 통해 문서 구조를 효과적으로 검색할 수 있으며, 각종 Apple 플랫폼과 Linux를 모두 아우른다. 활발한 버전 업데이트를 통해 Swift 버전 호환성, 성능 최적화, 설치 안정성을 지속적으로 개선해 왔다.
출처
[1] Kanna – Swift Package Index https://swiftpackageindex.com/tid-kijyun/Kanna
[2] What are the main features of Kanna for web scraping? https://webscraping.ai/faq/kanna/what-are-the-main-features-of-kanna-for-web-scraping
[3] Workflow runs · tid-kijyun/Kanna https://github.com/tid-kijyun/Kanna
[4] Parsing ONLY plain text from HTML using Kanna Swift https://stackoverflow.com/questions/53003906/parsing-only-plain-text-from-html-using-kanna-swift
[5] [swift html parser] kanna Parser 이용 시 조건 변화에 따른 출력 값 변화 https://tomorrowwillbe.tistory.com/entry/swift-html-parser-kanna-Parser-%C2%A0%EC%9D%B4%EC%9A%A9-%EC%8B%9C-%EC%A1%B0%EA%B1%B4-%EB%B3%80%ED%99%94%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%B6%9C%EB%A0%A5-%EA%B0%92-%EB%B3%80%ED%99%94
[6] How do I select specific HTML elements using Kanna? https://webscraping.ai/faq/kanna/how-do-i-select-specific-html-elements-using-kanna
[7] Can Kanna parse and extract information from XML documents? https://webscraping.ai/faq/kanna/can-kanna-parse-and-extract-information-from-xml-documents
[8] Workflow runs · tid-kijyun/Kanna https://github.com/tid-kijyun/Kanna/actions
[9] How do I extract attributes from HTML elements using Kanna? https://webscraping.ai/faq/kanna/how-do-i-extract-attributes-from-html-elements-using-kanna
[10] Kanna – GitHub Pages http://tid-kijyun.github.io/Kanna/tutorials/v1/installing.html
답글 남기기