gpt4 book ai didi

ios - 如何使用 Swift 从 URL 获取 HTML 源代码

转载 作者:IT王子 更新时间:2023-10-29 05:08:09 27 4
gpt4 key购买 nike

我需要查看某个 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 和 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)")
}

您可能希望根据页面使用的编码调整编码(请参阅 constants)。


旧答案,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")
}

关于ios - 如何使用 Swift 从 URL 获取 HTML 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26134884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com