[swift] SwiftSoup을 사용하여 웹페이지에서 폼 데이터를 추출하는 방법은?
SwiftSoup은 Swift에서 HTML을 파싱하고 조작하기위한 간단하고 강력한 라이브러리입니다. 이를 사용하여 웹페이지에서 폼 데이터를 추출하는 것은 간단한 작업입니다.
먼저, SwiftSoup을 프로젝트에 추가해야합니다. Swift Package Manager를 사용하는 경우, 프로젝트의 Package.swift
파일에 다음 종속성을 추가합니다:
dependencies: [
.package(url: "https://github.com/scinfu/SwiftSoup.git", from: "2.3.2")
]
이제 폼 데이터를 추출하는 방법을 살펴 보겠습니다. 예를 들어, 다음과 같은 HTML 폼이 있는 웹페이지가 있다고 가정해 봅시다.
<html>
<body>
<form id="myForm">
<input type="text" name="username" value="John Doe">
<input type="email" name="email" value="johndoe@example.com">
<input type="password" name="password" value="secretpassword">
<input type="submit" value="Submit">
</form>
</body>
</html>
이 HTML에서 폼 데이터를 추출하려면 다음 Swift 코드를 사용합니다:
import SwiftSoup
do {
let html = """
<html>
<body>
<form id="myForm">
<input type="text" name="username" value="John Doe">
<input type="email" name="email" value="johndoe@example.com">
<input type="password" name="password" value="secretpassword">
<input type="submit" value="Submit">
</form>
</body>
</html>
"""
let doc: Document = try SwiftSoup.parse(html)
let form: Element? = try doc.select("#myForm").first()
guard let formElement = form else {
print("Form not found")
return
}
let formData: [String: String] = try formElement.select("input").reduce(into: [:]) { result, inputElement in
guard let name = try inputElement.attr("name") else { return }
guard let value = try inputElement.attr("value") else { return }
result[name] = value
}
print(formData)
} catch {
print("Error: \(error)")
}
위의 코드는 SwiftSoup을 사용하여 HTML을 파싱하고, 폼 요소를 선택한 다음 각 입력 요소에서 이름과 값 속성을 추출합니다. 이를 사전 형태의 formData로 저장하고 출력합니다.
실행 결과는 다음과 같을 것입니다:
["password": "secretpassword", "username": "John Doe", "email": "johndoe@example.com"]
이렇게하면 SwiftSoup을 사용하여 웹페이지에서 폼 데이터를 추출할 수 있습니다. 또한 SwiftSoup은 HTML을 조작하는 다양한 기능을 제공하므로 웹 스크래핑 및 데이터 추출 작업을 더욱 쉽게 할 수 있습니다.
- SwiftSoup GitHub 저장소: https://github.com/scinfu/SwiftSoup