웹 스크랩핑을 수행할 때 많은 경우 웹 페이지의 링크 목록을 가져와야 할 수 있습니다. 이를 위해 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)를 참조하시기 바랍니다.
참고 자료:
- SwiftSoup 공식 GitHub 레포지토리: https://github.com/scinfu/SwiftSoup