ios 标签解析html_iOS解析html

在一些情况下我们在工程中需要解析html中的数据,TFHpple是一个非常方便的三方类.它可以根据标签解析html数据,应用比较简便.

首先要先做一下准备工作。

e85817e87b7f97a112f06891c7e7f414.png

9228ae854724c53c05ae481f15d604d9.png

下载[TFHpple:](topfunky/hpple),将文件夹拖入到工程中.

TFHpple的工作原理是事先根据URL将html数据转化为NSData类型.然后再根据标签解析数据.

```

- (void)viewDidLoad

{

NSString *str = [NSString stringWithFormat:@BrandDisplayDetailURL, self.brandId];

NSLog(@"%@" , str);

NSData *data = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:str]];

[self handelHTML:data];

}

#pragma mark - 解析html

- (void) handelHTML:(NSData *)data

{

TFHpple *xpathParser = [[TFHpple alloc]initWithHTMLData:data];

NSMutableArray *arr = [xpathParser searchWithXPathQuery:@"//a"].mutableCopy;

NSMutableArray *arrMark = [xpathParser searchWithXPathQuery:@"//mark"].mutableCopy;

NSMutableArray *arrPrice = [xpathParser searchWithXPathQuery:@"//span"].mutableCopy;

NSMutableArray *arrPicURL = [xpathParser searchWithXPathQuery:@"//img"].mutableCopy;

for (NSInteger i = 0; i<arr.count; i++) {

TFHppleElement *hpple = arr[i];

if (hpple.text != nil && ![hpple.text isEqualToString:@"查看更多..."]) {

[self.titleArr addObject:hpple.text];

}else{

NSDictionary *dic = hpple.attributes;

if (![[dic objectForKey:@"href"] isEqualToString:@"javascript:getData()"]) {

NSString *str = [dic objectForKey:@"href"];

NSArray *divArr = [str componentsSeparatedByString:@":"];

[self.popID addObject:divArr[2]];

}

}

}

for (NSInteger i = 0; i < arrMark.count; i++) {

TFHppleElement *hpple = arrMark[i];

if (hpple.text != nil) {

[self.markArr addObject:hpple.text];

}

}

for (NSInteger i = 0; i < arrPrice.count; i++) {

TFHppleElement *hpple = arrPrice[i];

if (hpple.text != nil) {

[self.priceArr addObject:hpple.text];

}

}

for (NSInteger i = 0; i < arrPicURL.count; i++) {

TFHppleElement *hpple = arrPicURL[i];

NSDictionary *dic = hpple.attributes;

[self.picURLArr addObject:[dic objectForKey:@"date-src"]];

}

[self.brandDetailTableView reloadData];

}

```

需要注意的是.从标签解析出来的数据是用数组存储的,而数组中存储的是TFHppleElement类型的对象.如果要完全取出数据.则需要使用TFHppleElement对象的属性.主要有text(取出文本),raw(取出标签所有内容),attributes(取出标签所包含的属性,返回值是字典),children(取出标签下所有子标签,返回数组).

其实,TFHpple的使用还是比较简单,html解析难在分析html的标签上.如果想要取的数据标签嵌套的比较复杂,想要取出来非常的费工夫.在这种情况下,首选的还应该是webView.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值