[swift] SwiftSoup을 사용하여 웹 페이지의 링크 목록을 추출하는 방법은?

웹 스크랩핑을 수행할 때 많은 경우 웹 페이지의 링크 목록을 가져와야 할 수 있습니다. 이를 위해 Swift에서는 SwiftSoup 라이브러리를 사용하여 HTML을 파싱하고 링크 요소를 추출할 수 있습니다. 다음은 SwiftSoup을 사용하여 웹 페이지의 링크 목록을 추출하는 방법에 대한 예시 코드입니다.

먼저, SwiftSoup 라이브러리를 프로젝트에 추가해야 합니다. 이를 위해 프로젝트의 Podfile에 다음과 같은 내용을 추가합니다.

pod 'SwiftSoup'

그런 다음, 터미널에서 pod install 명령을 실행하여 라이브러리를 설치합니다.

이제 아래의 예시 코드를 사용하여 웹 페이지의 링크 목록을 추출할 수 있습니다.

import Foundation
import SwiftSoup

func extractLinks(from url: String) {
    guard let url = URL(string: url) else {
        print("Invalid url")
        return
    }
    
    do {
        let html = try String(contentsOf: url)
        let doc = try SwiftSoup.parse(html)
        
        let links = try doc.select("a[href]")
        for link in links {
            print(try link.attr("abs:href"))
        }
    } catch {
        print("Error: \(error)")
    }
}

// 사용 예시
extractLinks(from: "https://www.example.com")

위의 예시 코드에서는 extractLinks(from:) 함수를 정의하였고, 이를 사용하여 웹 페이지의 링크 목록을 추출합니다. 함수의 인자로 웹 페이지의 URL을 전달하면, 해당 페이지의 HTML을 가져와서 파싱합니다.

링크를 추출하는 부분에서는 doc.select("a[href]")를 사용해 링크 요소를 선택한 뒤, 각 링크의 abs:href 속성을 통해 절대 URL을 출력합니다.

위의 예시 코드를 실행하면 웹 페이지에서 모든 링크의 절대 URL이 출력됩니다.

추가로, SwiftSoup은 CSS 선택자를 사용하여 특정 요소를 선택하는 기능도 제공합니다. 이를 활용하여 원하는 요소의 링크만을 추출할 수도 있습니다. SwiftSoup에 대한 자세한 사용법은 공식 문서(https://github.com/scinfu/SwiftSoup)를 참조하시기 바랍니다.

참고 자료: