抓取HTML中的图片资源

我所了解的,解决获取html中资源的方法有两种,一种是html解析,产用的是封装了libxml的TFHpple,虽然这个类库有一定的实用性,但是也有一些局限性,获取html中的资源,我更倾向于使用正则表达式。下面就通过请求一个url,从请求到得html中获取的image,来说明一下怎么样获取html中的资源。

废话少说,直接上代码,下面两个是我写的两个方法,如果急着使用,可以直接复制粘贴,如果感觉还行,清评论下留下你的脚印大笑

-(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;
}

具体上面这个方法是干什么的,可以通过代码里面的注释去理解

下面看第二个方法

-(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;
}

这个方法是根据正则表达式,截取你想要的内容。

如果你不想理解怎么截取的,想尽快实现此功能,那么,你需要做的就是把上面这两个方法复制到你的工程里面,按照下面的样子去调用就行了,看看下面调用的代码:

 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]);

//获取图片

    [arr enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL *stop) {

        if ([obj rangeOfString:@"http://"].length>0)

        {

            NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:obj]];

            UIImage * image = [UIImage imageWithData:data];

            NSLog(@"-height = -%f--width = %f",image.size.height,image.size.width);

        }

    }];

这个正则表达式,是获取html中的图片url的正则表达式,如果你想获取其他资源,只需要换一下这个正则表达式即可。

ok,文章就写到这,希望我这几个小时的忙碌能够帮助到一些人

更多地技术资源


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值