gpt4 book ai didi

javascript - 如何在 iOS UIWebView 中获取网页的所有

转载 作者:可可西里 更新时间:2023-11-01 04:04:44 24 4
gpt4 key购买 nike

每个人。

我正在尝试获取 UIWebView 中当前页面的所有图像 url。

所以,这是我的代码。

- (void)webViewDidFinishLoad:(UIWebView*)webView {
NSString *firstImageUrl = [self.webView stringByEvaluatingJavaScriptFromString:@"var images = document.getElementsByTagName('img');images[0].src.toString();"];
NSString *imageUrls = [self.webView stringByEvaluatingJavaScriptFromString:@"var images= document.getElementsByTagName('img');var imageUrls = "";for(var i = 0; i < images.length; i++){var image = images[i];imageUrls += image.src;imageUrls += \\’,\\’;}imageUrls.toString();"];
NSLog(@"firstUrl : %@", firstImageUrl);
NSLog(@"images : %@",imageUrls);
}

第一个 NSLog 返回正确图像的 src,但第二个 NSLog 不返回任何内容。

2013-01-25 00:51:23.253 WebDemo[3416:907] firstUrl: https://www.paypalobjects.com/en_US/i/scr/pixel.gif
2013-01-25 00:51:23.254 WebDemo[3416:907] images :

我不知道为什么。请帮助我...

谢谢。

最佳答案

Perrohunter 指出了一个很棒的 NSRegularExpression 解决方案。如果不想枚举匹配数组,可以使用基于 block 的 enumerateMatchesInString方法也是:

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(<img\\s[\\s\\S]*?src\\s*?=\\s*?['\"](.*?)['\"][\\s\\S]*?>)+?"
options:NSRegularExpressionCaseInsensitive
error:&error];

[regex enumerateMatchesInString:yourHTMLSourceCodeString
options:0
range:NSMakeRange(0, [yourHTMLSourceCodeString length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {

NSString *img = [yourHTMLSourceCodeString substringWithRange:[result rangeAtIndex:2]];
NSLog(@"img src %@",img);
}];

我还更新了正则表达式模式来处理以下问题:

  • 起始img标签和src属性之间可以有属性;
  • src属性之后和>之前可以有属性;
  • img 标签中间可以有换行符(. 捕获除换行符以外的所有内容);
  • src 属性值可以用'" 引用;和
  • src= 之间以及 = 和后续值之间可以有空格。

我自由地认识到阅读正则表达式模式对于外行来说是痛苦的,也许其他解决方案可能更有意义(Joris 的 JSON 建议,使用扫描仪等)。但是如果你想使用正则表达式,上面的模式可能涵盖了 img 标签的更多排列,并且 enumerateMatchesInString 可能比 matchesInString 更有效

关于javascript - 如何在 iOS UIWebView 中获取网页的所有 <img src>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505764/

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