ספריית Swift חינמית לניתוח ועריכת נתוני HTML
ספריית Swift קוד פתוח לניתוח HTML/XML המספקת API Swift נקי לניתוח וניווט במסמכי HTML ו-XML בקלות.
מה זה Kanna?
אם אי פעם בנית אפליקציית Swift שצריך לחלץ נתונים מדפי אינטרנט, לנתח תגובות API ב‑XML, או לגרד תוכן מובנה, סביר להניח שנתקלת באתגר של עבודה עם מחרוזות HTML ו‑XML גולמיות. הספרייה הסטנדרטית של Swift אינה כוללת parser מקורי ונוח לפורמטים אלה, ולכן Kanna נכנסת לתמונה כדי להציל את המצב. בליבה, Kanna מספקת API Swift נקי לניתוח וניווט במסמכי HTML ו‑XML. מאחורי הקלעים, היא מעבירה את העומס הכבד ל‑libxml2, מה שאומר שאתה מקבל ביצועי ניתוח איתנים ללא צורך במימוש מחדש של כללי דקדוק מורכבים בעצמך.
קנה מתבלט באקוסיסטם של Swift בזכות הפשטות והעוצמה שלו. עם ה-API האינטואיטיבי שלו, אתה יכול לנווט ולשנות מסמכי HTML/XML באמצעות שיטות שאילתא מוכרות כמו XPath 1.0 ובוררים של CSS3. בין אם אתה בונה סקרייפר אינטרנט, מחלץ נתונים מזרמי RSS, או מעבד קבצי תצורת XML, קנה מספק את הכלים שאתה צריך. תמיכה חוצת פלטפורמות היא אחת התכונות האטרקטיביות ביותר של קנה. הוא פועל על macOS, iOS, tvOS, watchOS ואפילו Linux. XPath 1.0 ובוררים של CSS3 נותנים לך שתי דרכים חזקות ותעשייתיות לשאילת מסמכים. התמיכה המשולבת שלו הן בבוררים של CSS3 והן ב‑XPath 1.0 הופכת אותו לגמיש מספיק כדי להתמודד עם כל דבר, החל מחילוץ HTML פשוט ועד לעיבוד XML מורכב עם מרחבי שם. בין אם אתה בונה אפליקציית iOS הצורכת זרם RSS, שרת Vapor שמגרד מחירי מתחרים, או כלי שורת פקודה שממיר נתוני XML, קנה נותן לך את הכלים לבצע את העבודה בצורה אמינה ואלגנטית.
התחלה עם Kanna
הדרך המומלצת והקלה ביותר להתקנת Kanna היא באמצעות CocoaPods. אנא השתמשו בפקודה הבאה להתקנה חלקה.
התקנת Kanna באמצעות Carthage
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
התקנת Kanna באמצעות CocoaPods
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
ניתן גם להתקין זאת באופן ידני; הורידו את קבצי השחרור האחרונים ישירות ממאגר GitHub.
פענוח מסמכי HTML באמצעות Swift
ספריית הקוד הפתוח Kanna כוללת תמיכה בטעינה וניתוח של מסמכי HTML בתוך יישומי Swift. המקרה השימושי ביותר לניתוח HTML הוא, בין אם הוא הורד מהאינטרנט או נבנה באופן תכנותי. הנה דוגמה פשוטה שמראה כיצד מפתחים יכולים להשתמש בפונקציית HTML שמקבלת מחרוזת HTML גולמית, מקודדת אותה ומחזירה אובייקט מסמך המכיל תכונות כגון .title ו-.body שמספקות גישה מהירה לאלמנטים נפוצים ללא צורך בבורר.
איך לפרש HTML באמצעות קידוד UTF-8 דרך ספריית Swift?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
ברוכים הבאים לניתוח Swift
Kanna עושה ניתוח HTML קל ואלגנטי.
View on GitHub
"""
// Parse the HTML string using UTF-8 encoding
if let doc = try? HTML(html: htmlString, encoding: .utf8) {
// Access the document title directly via a convenience property
print(doc.title ?? "No title found")
// Output: My Tech Blog
// Access the full body text
print(doc.body?.text ?? "No body")
}
תמיכה בשאילתות בורר CSS3
הספרייה Kanna כוללת תמיכה מלאה בבוררי CSS3, המאפשרת למפתחים להשתמש בתחביר CSS מוכר כדי למצוא אלמנטים. תמיכת הבוררים של Kanna מאפשרת להשתמש באותו תחביר בורר שבו הייתם כותבים בקובץ סגנון או ב‑querySelectorAll של JavaScript. זה הופך את השימוש לאינטואיטיבי במיוחד עבור כל מי שמגיע מרקע פיתוח אתרים. הדוגמה הבאה מציגה כיצד משתמשים יכולים לבחור אלמנטים ב‑HTML ולחזור על מספר אלמנטים בתוך יישומי Swift.
איך לבחור אלמנטים מרובים של HTML ולחלץ טקסט מהם באמצעות ספריית Swift?
import Kanna
let htmlString = """
-
ספר Swift
$39.99
-
מדריך Xcode
$24.99
-
יסודות iOS
$49.99
"""
if let doc = try? HTML(html: htmlString, encoding: .utf8) {
// Select all elements with class "product" inside a "ul"
for product in doc.css("ul.product-list li.product") {
// Extract text from nested span elements using child selectors
let name = product.css("span.name").first?.text ?? "Unknown"
let price = product.css("span.price").first?.text ?? "N/A"
// Access HTML attributes using subscript notation
let productId = product["data-id"] ?? "No ID"
print("[\(productId)] \(name) — \(price)")
}
}
תמיכה בשאילתות XPath 1.0
הספרייה Kanna כוללת תמיכה בשאילתות XPath 1.0 בתוך אפליקציות Swift. XPath מספקת דרך חזקה וגמישה יותר לנווט בין אלמנטים ותכונות במסמך XML/HTML. היא שימושית במיוחד למבני מסמכים מורכבים. ביטויי XPath יכולים לעבור על מסמכים בדרכים שהבוררים של CSS אינם יכולים, כגון מציאת אלמנטים על בסיס המיקום שלהם, יחסי הורה‑ילד, או התאמת טקסט מורכבת. היא בלתי ניתנת להחלפה עבור ניתוח XML וגרידת HTML מורכבת.
פענוח ואימות XML באמצעות Swift
מעבר לפירוש HTML בסיסי, ספריית הקוד הפתוח Kanna מציעה יכולות טיפול חזקות ב‑XML. זה כולל אימות מבנה XML נכון וניהול תכונות. כאשר עובדים עם נתונים מובנים, נדרש יותר מאשר חילוץ אלמנטים בלבד. Kanna מספקת גישה מלאה למסמך XML, כולל תגובות, הוראות עיבוד ונתוני מטה של המסמך.
איך לבצע ניתוח XML בתוך אפליקציות Swift?
import Kanna
let xmlString = """
Swift Developer News
-
Kanna 6.0 Released with Swift 6 Support
Alex Johnson
Mon, 26 Jun 2024 00:00:00 GMT
-
New Features in Swift 5.10
Maria Garcia
Tue, 15 Apr 2024 00:00:00 GMT
"""
if let doc = try? Kanna.XML(xml: xmlString, encoding: .utf8) {
// Define a namespace mapping: prefix -> URI
// The prefix you use here ("dc") can be anything; it maps to the namespace URI
let namespaces = [
"dc": "http://purl.org/dc/elements/1.1/"
]
// Query elements in the "dc" namespace using the prefix
for item in doc.xpath("//item", namespaces: namespaces) {
let title = item.at_xpath("title")?.text ?? "No title"
let creator = item.at_xpath("dc:creator", namespaces: namespaces)?.text ?? "Unknown"
let pubDate = item.at_xpath("pubDate")?.text ?? "No date"
print("Title: \(title)")
print("Author: \(creator)")
print("Published: \(pubDate)\n")
}
}