用TFHpple解析HTML怎么获取标签当中的属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用TFHpple解析HTML怎么获取标签当中的属性相关的知识,希望对你有一定的参考价值。
首先我要吐槽一下,你的div的class少了个引号... 然后可以两种方法实现,希望可以帮到你: 1. JS方法: window.onload=function() var va = document.getElementById("d1").childNodes; for(var i=0;i 参考技术A 首先我要吐槽一下,你的div的class少了个引号... 然后可以两种方法实现,希望可以帮到你: 1. JS方法: window.onload=function() var va = document.getElementById("d1").childNodes; for(var i=0;iiOS 解析HTML数据
因为项目需要,今天特地查阅了 一些对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:@"<div class=\\"content\\">"]; NSMutableString *imageStr2=[[NSMutableString alloc]initWithString:[dataString substringFromIndex:rang1.location+rang1.length]]; NSRange rang2=[imageStr2 rangeOfString:@"<div class=\\"clear\\">"]; NSMutableString *imageStr3=[[NSMutableString alloc]initWithString:[imageStr2 substringToIndex:rang2.location]]; NSLog(@"%@",imageStr3);
imageStr3:
4、将dataString转换成NSData,给TFHpple类用
NSData *data=[imageStr3 dataUsingEncoding:NSUTF8StringEncoding];
5、根据标签<p>找到自己想要的代码块
TFHpple *xpathParser = [[TFHpple alloc]initWithHTMLData:data]; // 根据标签进行筛选 获取所有标签是<p>的代码块 NSArray *elements = [xpathParser searchWithXPathQuery:@"//p"]; NSMutableArray *contArray = [[NSMutableArray alloc]init];
6、获取想要的标签内容
//开始整理数据 for (TFHppleElement *elsement in elements) { if ([elsement content] != nil) { if (![[elsement objectForKey:@"style"]isEqualToString:@"text-align"]) {//筛选属性是里有style 并且值是text-align的标签 //打印出该节点的所有内容 包括标签 NSLog(@"%@",elsement.raw); //打印出该节点的所有内容 不包括标签 NSLog(@"%@",elsement.text); } } }
得到的结果:
7、获取想要的标签属性
//开始整理数据 for (TFHppleElement *elsement in elements) { if ([elsement content] != nil) { //将这段代码转换成字典 key是标签内的属性 value是属性对应的值 //得到的是标签属性 不能得到标签内容 NSDictionary *elementContent =[elsement attributes]; NSLog(@"-----------%@",elementContent); if (elementContent != nil) { [contArray addObject:[elementContent objectForKey:@"style"]]; } } }
得到的结果:
以上是关于用TFHpple解析HTML怎么获取标签当中的属性的主要内容,如果未能解决你的问题,请参考以下文章
C#当中如何使用正则表达式获取某一标签的所有属性 属性数量不确定
jsoup怎么解析javascript动态改变html标签的属性值