0

我正在使用“SwiftSoup”SDK 来解析来自 UIWebView 的 HTML 内容。我想要从 HTML 内容中获取的每个图像的图像大小和分辨率。如何在加载图像后以及从 SwiftSoup 接收的 HTML 内容中获取图像大小和分辨率?

4

1 回答 1

0

假设您知道 HTML 中的所有图像何时加载,这里有一个 javascript 代码,可用于获取所有图像的尺寸列表:

let script = "JSON.stringify([].slice.call(document.getElementsByTagName('img')).map(function(img) { return {url: img.src, width: img.clientWidth, height: img.clientHeight} }))"

通过stringByEvaluatingJavaScript(from:)执行这个 javascript应该会给你一个 JSON,你可以解析它以获得所需的信息。

例如这个页面的输出是

[{"url":"https://i.stack.imgur.com/rQQMq.png?s=48&g=1","width":24,"height":24},{"url":"https://www.gravatar.com/avatar/46be6ae9d14855f5ab1aaf1d510ab8bc?s=32&d=identicon&r=PG&f=1","width":32,"height":32},{"url":"https://clc.stackoverflow.com/impression.gif?an=49ocs77evOWqh-6LVv8gJiaWI_07xL9f6GBcyDt7dl3NWtNsxo9-twOOBzKwMPRsYGBosGdkZGCRZuqawDHjMeecj4L_WRhSDiyObbJ82JRhP5vp7j6Og2e4ru0W9mRhmNs0gbnc8pVcsT0jc2Z-sTTTwxaOliucyy4LsrAwFLRcfRVt-e6KDEjTco4LjVyda4XkgZqaJcJzLa9Oj4RoMrJk4eJgYpBgYGDg4o1ij5VnYhAHsvk4o9gSmZgYRIBsfmYbtrvCTAxiIHH2ALapwv3t9i1z_NRrAA&md=291","width":0,"height":0}]

我建议切换到,WKWebView因为它也是 Apple 推荐的,并且因为stringByEvaluatingJavaScript(from:)它是阻塞的(WKWebView提供此函数的异步版本,并且也将为您进行解析,因此您可以JSON.stringify()从脚本中删除调用)。

于 2018-03-07T14:48:58.100 回答