[swift] SwiftSoup을 이용하여 웹페이지에서 테이블 데이터를 추출하는 방법은?

SwiftSoup은 Swift에서 HTML 파싱을 위한 라이브러리로, 웹페이지에서 데이터를 추출하거나 웹 크롤링을 할 때 유용하게 사용됩니다. 특히 테이블 데이터를 추출하는 경우에도 SwiftSoup을 사용하면 간편하게 구현할 수 있습니다.

아래는 SwiftSoup을 이용하여 웹페이지에서 테이블 데이터를 추출하는 예제 코드입니다.

import SwiftSoup

do {
    let html = "<html><body><table><tr><th>Name</th><th>Age</th></tr><tr><td>John</td><td>25</td></tr><tr><td>Emily</td><td>30</td></tr></table></body></html>"
    
    let doc: Document = try SwiftSoup.parse(html)
    
    let table: Element? = try doc.select("table").first()
    
    if let rows = try table?.select("tr") {
        for row in rows {
            let cells = try row.select("td")
            for cell in cells {
                print(cell.text())
            }
        }
    }
} catch {
    print("Error: \(error)")
}

위 예제 코드는 먼저 SwiftSoup을 import해줍니다. 그 후 예제로 사용할 html 문자열을 정의합니다. 이 문자열은 테이블 데이터를 포함한 HTML 코드입니다.

do-catch 구문을 사용하여 SwiftSoup을 사용하는 도중 발생할 수 있는 오류를 처리합니다. try 키워드를 사용하여 해당 코드 블록을 실행하며, 오류가 발생하면 catch 블록으로 이동하여 오류를 처리합니다.

try 키워드를 사용하여 SwiftSoup.parse(html)을 호출하면 HTML 코드를 파싱하여 Document 객체를 얻을 수 있습니다. 이 Document 객체를 사용하여 원하는 요소를 선택할 수 있습니다.

table 변수에는 파싱된 HTML에서 첫 번째 <table> 요소를 할당합니다. 그 다음 if let 구문을 사용하여 <table> 안에 있는 모든 <tr> 요소를 가져옵니다. 각 <tr> 요소마다 <td> 요소를 선택하고, 그 안의 텍스트를 출력합니다.

위 코드를 실행하면 결과로 “John”, “25”, “Emily”, “30”이 순서대로 출력됩니다. 이는 테이블의 각 셀에 포함된 데이터입니다.

SwiftSoup을 사용하면 웹페이지에서 테이블 데이터를 손쉽게 추출할 수 있으며, 데이터를 활용하여 다양한 작업을 수행할 수 있습니다. 추가적인 기능 및 사용법에 대해서는 SwiftSoup의 공식 문서를 참고하시기 바랍니다.

참고 문서: https://github.com/scinfu/SwiftSoup