使用TFHpple第三方库解析html简介
2015-08-06 20:59
477 查看
使用XPath解析html
可以从此处https://github.com/topfunky/hpple下载工程,将TFHpple.h,TFHpple.m,TFHppleElement.h,TFHppleElement.m,XPathQuery.h,XPathQuery.m加到自己的项目中,在
1、Frameworks中导入libxml2.x
2、在项目中找到Header Search Paths,加入/usr/include/libxml2
3、
- (void)parserHtml{
NSData *htmlData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:kUrl]];
//创建解析器
TFHpple *xpathParser = [[TFHpple alloc]initWithHTMLData:htmlData];
NSArray *divArray = [xpathParser searchWithXPathQuery:@"//div"];
if ([divArray count]) {
//根据需求解析数据
// NSLog(@"%@",divArray);
TFHppleElement *element1 = [divArray objectAtIndex:6];
NSArray *arr = [element1 children];
// NSLog(@"%@",arr);
for (TFHppleElement *element in arr) {
NSLog(@"%@",[element content]);
[_str appendString:[element content]];
//NSDictionary *aAttributeDict = [aElement attributes];//这是获取元素中的属性
[_str appendString:[NSString stringWithFormat:@"\n"]];
}
}
}
与上方代码有区别:
//如果解析的网页不是utf8编码,如gbk编码,可以先将其转换为utf8编码再对其进行解析
-(NSData *)toUTF8:(NSData *)sourceData {
CFStringRef gbkStr =CFStringCreateWithBytes(NULL,[sourceData bytes],[sourceData
length],kCFStringEncodingGB_18030_2000,false);
if (gbkStr ==
NULL) {
returnnil;
}
else {
NSString*gbkString = (NSString*)gbkStr;
//根据网页源代码中编码方式进行修改,此处为从gbk转换为utf8
NSString
*utf8_String =[gbkString stringByReplacingOccurrencesOfString:@"METAhttp-equiv="Content-Type" content="text/html; charset=GBK""
withString:@"META http-equiv="Content-Type"content="text/html; charset=UTF-8""];
return[utf8_String
dataUsingEncoding:NSUTF8StringEncoding];
}
}
可以从此处https://github.com/topfunky/hpple下载工程,将TFHpple.h,TFHpple.m,TFHppleElement.h,TFHppleElement.m,XPathQuery.h,XPathQuery.m加到自己的项目中,在
1、Frameworks中导入libxml2.x
2、在项目中找到Header Search Paths,加入/usr/include/libxml2
3、
- (void)parserHtml{
NSData *htmlData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:kUrl]];
//创建解析器
TFHpple *xpathParser = [[TFHpple alloc]initWithHTMLData:htmlData];
NSArray *divArray = [xpathParser searchWithXPathQuery:@"//div"];
if ([divArray count]) {
//根据需求解析数据
// NSLog(@"%@",divArray);
TFHppleElement *element1 = [divArray objectAtIndex:6];
NSArray *arr = [element1 children];
// NSLog(@"%@",arr);
for (TFHppleElement *element in arr) {
NSLog(@"%@",[element content]);
[_str appendString:[element content]];
//NSDictionary *aAttributeDict = [aElement attributes];//这是获取元素中的属性
[_str appendString:[NSString stringWithFormat:@"\n"]];
}
}
}
与上方代码有区别:
//如果解析的网页不是utf8编码,如gbk编码,可以先将其转换为utf8编码再对其进行解析
-(NSData *)toUTF8:(NSData *)sourceData {
CFStringRef gbkStr =CFStringCreateWithBytes(NULL,[sourceData bytes],[sourceData
length],kCFStringEncodingGB_18030_2000,false);
if (gbkStr ==
NULL) {
returnnil;
}
else {
NSString*gbkString = (NSString*)gbkStr;
//根据网页源代码中编码方式进行修改,此处为从gbk转换为utf8
NSString
*utf8_String =[gbkString stringByReplacingOccurrencesOfString:@"METAhttp-equiv="Content-Type" content="text/html; charset=GBK""
withString:@"META http-equiv="Content-Type"content="text/html; charset=UTF-8""];
return[utf8_String
dataUsingEncoding:NSUTF8StringEncoding];
}
}
相关文章推荐
- html 交互、表单
- Html之网页的定时跳转和定时刷新
- MVC View中Model是List<dynamic>时不能使用Html.DisplayFor
- html = data.decode('gbk').encode('utf-8')
- html = data.decode('gbk').encode('utf-8')
- HTML DOM Event
- 标记语言之Html学习
- 解决IE兼容问题的一种思路-HTML判断IE版本
- HTML <sup>标签
- ANT调用JMeter执行脚本并生成html测试报告
- Sublime 3新建文件快速生成Html头部信息
- HTML中的ID的命名
- HTML页面加载和解析流程
- 实现pdf完美转换成html的方法
- HTML的内联框架
- HTML不允许拖动
- HTML <img> 标签
- 20. Element innerHTML 属性
- 使用 TextView 显示html页面
- 模式化窗口.html