我需要查看由某个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")
}
问题内容: 我有一个NSURLSession调用dataTaskWithRequest以这种方式发送POST请求 响应等于: 我的问题是我不知道如何获取名称为MYCOOKIEIS的“ Set-Cookie”中的cookie。 我将在用户登录时使用它,因此,如果用户未登录->登录(调用登录api),否则请转到主屏幕并调用其他API。 有人可以帮助我从那里拿走饼干吗? 问题答案: Swift呈现形式可
问题内容: 在JSP中,如何从URL获取参数? 例如,我有一个www.somesite.com/Transaction_List.jsp?accountID=5 要获取的 URL5 。 是否有request.getAttribute(“ accountID”)之类的会话或类似内容? 问题答案: 在GET请求中,请求参数取自查询字符串(URL上问号后面的数据)。例如,URL http://hostn
问题内容: 我有一个类似的网址: 如何使用jQuery 获取锚点值并将其存储为变量? 问题答案: 您可以使用和,如下所示: 如果其中可能没有,请执行以下检查: 如果这是 当前 页面的URL,则可以使用它来获取它,并根据需要替换。
问题内容: 我使用WKWebView登录到一个网站,现在我想解析该网站的html。如何快速访问HTML网站?我知道它如何用于UIWebView但不适用于WKWebView。 谢谢你的帮助! 问题答案: 如果您等到页面加载完毕,则可以使用: 您还可以注入一些JavaScript,使您返回HTML。 您可以注入的javascript如下所示:
我需要用函数SSJS from mJson()读一个URL。例如Notes View的数据访问API http://{host}/{database}/api/data/collections/name/{name} 我该怎么做? P. S我认为(我不知道是否是真的),如果我使用Java代码(例如类URLReader从这个博客,我失去作者/读者的功能,因为是我的服务器,而不是当前用户执行读取流?
在Spring,我找到了一个给定url的MockMVC: 太好了。现在我想看看这将返回的html是什么。我该怎么做?我想要它的字符串表示(即String theHtml=...),这样我就可以解析它并在我的测试中检查它。