抓取HTML中的图片资源 - html/css语言栏目:html.cs

我所了解的,解决获取 html中资源的方法有两种,一种是html解析,产用的是封装了libxml的TFHpple,虽然这个类库有一定的实用性,但是也有一些局限性,获取html中的资源,我更倾向于使用正则表达式。下面就通过请求一个url,从请求到得html中获取的image,来说明一下怎么样获取html中的资源。   废话少说,直接上代码,下面两个是我写的两个方法,如果急着使用,可以直接复制粘贴,如果感觉还行,清评论下留下你的脚印大笑   [objc]   -(NSString*) urlstring:(NSString*)strurl   {       NSURL * url = [NSURL URLWithString:strurl];       NSData *data = [NSData dataWithContentsOfURL:url];       //GBK转码,解决中文乱码问题       NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);       NSString * retStr = [[NSString alloc] initWithData:data encoding:enc];       return retStr;   }     具体上面这个方法是干什么的,可以通过代码里面的注释去理解 下面看第二个方法   [objc]   -(NSMutableArray *)substringByRegular:(NSString *)regular andResult:(NSString *)htmlResult   {       NSString * reg=regular;       NSRange r= [htmlResult rangeOfString:reg options:NSRegularExpressionSearch];       NSMutableArray *arr=[NSMutableArray array];              //递归,截取符合正则表达式要求的字符串,并把符合要求字符串存放在可变数组中       if (r.length != NSNotFound &&r.length != 0)       {           while (r.length != NSNotFound &&r.length != 0)           {               NSString* substr = [htmlResult substringWithRange:r];               [arr addObject:substr];               NSRange startr=NSMakeRange(r.location+r.length, [htmlResult length]-r.location-r.length);               r=[htmlResult rangeOfString:reg options:NSRegularExpressionSearch range:startr];           }       }       return arr;   }     这个方法是根据正则表达式,截取你想要的内容。 如果你不想理解怎么截取的,想尽快实现此功能,那么,你需要做的就是把上面这两个方法复制到你的工程里面,按照下面的样子去调用就行了,看看下面调用的代码:   [objc]   NSString * str = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.lomowo.com/posts/47689"] encoding:4 error:nil];   NSLog(@"==result = %@",[self substringByRegular:@"(?<=src=\").+?\\.(gif|jpg|bmp|png)(?=\")" andResult:str]);   [objc]   <p class="p1"><span class="s1">//</span>获取图片</p><p class="p2">    [arr <span class="s2">enumerateObjectsUsingBlock</span>:^(<span class="s3">NSString</span> * obj, <span class="s3">NSUInteger</span> idx, <span class="s4">BOOL</span> *stop) {</p><p class="p2">        <span class="s4">if</span> ([obj <span class="s2">rangeOfString</span>:<span class="s5">@"http://"</span>].<span class="s3">length</span>><span class="s6">0</span>)</p><p class="p2">        {</p><p class="p2">            <span class="s3">NSData</span> * data = [<span class="s3">NSData</span> <span class="s2">dataWithContentsOfURL</span>:[<span class="s3">NSURL</span> <span class="s2">URLWithString</span>:obj]];</p><p class="p2">            <span class="s3">UIImage</span> * image = [<span class="s3">UIImage</span> <span class="s2">imageWithData</span>:data];</p><p class="p2">            <span class="s2">NSLog</span>(<span class="s5">@"-height = -%f--width = %f"</span>,image.<span class="s3">size</span>.<span class="s3">height</span>,image.<span class="s3">size</span>.<span class="s3">width</span>);</p><p class="p2">        }</p><p class="p2">    }];</p>   这个正则表达式,是获取html中的图片url的正则表达式,如果你想获取其他资源,只需要换一下这个正则表达式即可。
返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发

请先 登录 再评论,若不是会员请先 注册