我想显示网站上的图片。问题是图像位于" xxx。?action = stream"
我试过了:
extension UIImageView {
public func imageFromUrl(urlString: String) {
if let url = NSURL(string: urlString)
{
let request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
(response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in
self.image = UIImage(data: data!)
}
}
}
这适用于具有文件扩展名但在我的情况下不适用于图像的图像。
网站HTML代码:
<html>
<body style="margin: 0px">
<img style="-webkit-user-select: none; display: block; margin: auto; cursor: zoom-in;" src="http://1.1.1.181:8085/?action=stream" width="627" height="353">
</body>
</html>
答案 0 :(得分:1)
首先,安装Fuzi - 或任何其他有能力的第三方,我只是使用这个作为示例 - 并导入它:
import Fuzi
将网页本身作为数据下载,例如,使用NSURLSession。
NSURLSession.sharedSession().dataTaskWithURL(webpageURL, completionHandler: { (data, response, error) in
if let error = error {
print(error.debugDescription)
} else {
if let data = data {
// next code takes place here
}
}
}).resume()
将数据解码为String然后创建HTMLDocument
的实例:
do {
if let html = String(data: data, encoding: NSUTF8StringEncoding) {
let doc = try HTMLDocument(string: html)
// next code takes place here
}
} catch let error as NSError {
print(error.debugDescription)
}
然后诀窍是检查您的HTML并了解您想要定位的路径。
在您的示例中,您需要找到img
标记,然后获取其src
值。
找到标签:
let path = doc.css("img")
获取其src
属性:
if let firstObject = path[0] {
let link = firstObject["src"]
print(link)
}
完整示例:
NSURLSession.sharedSession().dataTaskWithURL(webpageURL, completionHandler: { (data, response, error) in
if let error = error {
print(error.debugDescription)
} else {
if let data = data {
do {
if let html = String(data: data, encoding: NSUTF8StringEncoding) {
let doc = try HTMLDocument(string: html)
let path = doc.css("img")
if let firstObject = path[0],
link = firstObject["src"] {
print(link)
}
}
} catch let error as NSError {
print(error.debugDescription)
}
}
}
}).resume()
使用您的示例HTML,打印:
现在您已获得图片链接,您可以自行下载图片。