如何使用Swift从URL获取HTML源
我需要查看由某个URL给出的页面的HTML。如果我有这个,使用Swift获取该URL的HTML源的最有效和同步的方法是什么?我还没有找到一种简单的在线方式来将其返回到变量中,而不是在completionHandler中将其打印出来。
无论使用URL的任何调用,我都需要操纵源。如何在Swift中完成?
回答:
您可能应该看一下该方法:
+
stringWithContentsOfURL:encoding:error(docs)
您将在Objective C中这样称呼它:
NSString *myURLString = @"http://google.com";NSURL *myURL = [NSURL URLWithString:myURLString];
NSError *error = nil;
NSString *myHTMLString = [NSString stringWithContentsOfURL:myURL encoding: NSUTF8StringEncoding error:&error];
if (error != nil)
{
    NSLog(@"Error : %@", error);
}
else
{
    NSLog(@"HTML : %@", myHTMLString);
}
因此在Swift 3和Swift 4中,等效项为:
let myURLString = "https://google.com"guard let myURL = URL(string: myURLString) else {
    print("Error: \(myURLString) doesn't seem to be a valid URL")
    return
}
do {
    let myHTMLString = try String(contentsOf: myURL, encoding: .ascii)
    print("HTML : \(myHTMLString)")
} catch let error {
    print("Error: \(error)")
}
您可能要根据页面使用的编码来调整编码(请参见常量)。
旧答案,Swift 2.2:
let myURLString = "http://google.com"guard let myURL = NSURL(string: myURLString) else {
    print("Error: \(myURLString) doesn't seem to be a valid URL")
    return
}
do {
    let myHTMLString = try String(contentsOfURL: myURL)
    print("HTML : \(myHTMLString)")
} catch let error as NSError {
    print("Error: \(error)")
}
旧答案,Swift 1.2:
let myURLString = "http://google.com"if let myURL = NSURL(string: myURLString) {
    var error: NSError?
    let myHTMLString = NSString(contentsOfURL: myURL, encoding: NSUTF8StringEncoding, error: &error)
    if let error = error {
        println("Error : \(error)")
    } else {
        println("HTML : \(myHTMLString)")
    }
} else {
    println("Error: \(myURLString) doesn't seem to be a valid URL")
}
以上是 如何使用Swift从URL获取HTML源 的全部内容, 来源链接: utcz.com/qa/421172.html







