ios 抓取html代码,iOS 解析HTML数据(示例代码)

本文介绍了如何在iOS应用中抓取和解析HTML内容。通过导入TFHpple库,添加libxml2库,然后读取本地或网络HTML内容,截取所需部分,转换为NSData并使用XPath查询获取特定标签的数据。最后,展示了如何获取标签内容和属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为项目需要,今天特地查阅了 一些对HTML解析的文章,文章不算少,只是有的内容不是很全面,不太够用,在此将他们补充到一起。

一、首先 先在项目中导入TFHpple  链接:https://github.com/zgGitHub/TFHpple

1、添加libxml2.tbd库

2、添加一些路径 在TAGER中的Build Setting中 找到 Hesder Search Paths 输入两个路径 一个是libxml2.tbd库在你的项目中的路径;另一个是 $(SDKROOT)/usr/include/libxml2

comment+b 查看是否运行正常

二、1、导入三个头文件

#import "XPathQuery.h"

#import "TFHpple.h"

#import "TFHppleElement.h"

2、首先将网页的html转换成oc能够认识的NSString数据;

(1)如果你的HTML页面是保存在项目中的,用如下方法:

NSString *dataString = [NSString stringWithContentsOfFile:[[NSBundle       mainBundle]pathForResource:@"瀑布流" ofType:@"html"] encoding:NSUTF8StringEncoding error:nil];

(2)如果是从网络上请求的 用这个方法:

NSString *dataString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.lomowo.com/posts/47632"] encoding:NSUTF8StringEncoding error:nil];

3、如果不想整篇幅的取值 ,可以截取自己想要的内容

NSRange rang1=[dataString rangeOfString:@"

"];

NSMutableString*imageStr2=[[NSMutableString alloc]initWithString:[dataString substringFromIndex:rang1.location+rang1.length]];

NSRange rang2=[imageStr2 rangeOfString:@"

"];

NSMutableString*imageStr3=[[NSMutableString alloc]initWithString:[imageStr2 substringToIndex:rang2.location]];

NSLog(@"%@",imageStr3);

imageStr3:

52240cd2d47ec45525f0752d9c15c939.png

4、将dataString转换成NSData,给TFHpple类用

NSData *data=[imageStr3 dataUsingEncoding:NSUTF8StringEncoding];

5、根据标签

找到自己想要的代码块

TFHpple *xpathParser =[[TFHpple alloc]initWithHTMLData:data];//根据标签进行筛选 获取所有标签是

的代码块

NSArray *elements = [xpathParser searchWithXPathQuery:@"//p"];

NSMutableArray*contArray = [[NSMutableArray alloc]init];

6、获取想要的标签内容

//开始整理数据

for (TFHppleElement *elsement inelements) {if ([elsement content] !=nil) {if (![[elsement objectForKey:@"style"]isEqualToString:@"text-align"]) {//筛选属性是里有style 并且值是text-align的标签//打印出该节点的所有内容 包括标签

NSLog(@"%@",elsement.raw);//打印出该节点的所有内容 不包括标签

NSLog(@"%@",elsement.text);

}

}

}

得到的结果:

298555bb218dea99cd772a0c89d0237e.png

7、获取想要的标签属性

//开始整理数据

for (TFHppleElement *elsement inelements) {if ([elsement content] !=nil) {//将这段代码转换成字典 key是标签内的属性 value是属性对应的值//得到的是标签属性 不能得到标签内容

NSDictionary *elementContent =[elsement attributes];

NSLog(@"-----------%@",elementContent);if (elementContent !=nil) {

[contArray addObject:[elementContent objectForKey:@"style"]];

}

}

}

得到的结果:

753c98d60210b64a312cf2a8d094a75c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值