如何使用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

回到顶部