我正在使用“SwiftSoup”SDK 来解析来自 UIWebView 的 HTML 内容。我想要从 HTML 内容中获取的每个图像的图像大小和分辨率。如何在加载图像后以及从 SwiftSoup 接收的 HTML 内容中获取图像大小和分辨率?
问问题
408 次
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 回答