`
119568242
  • 浏览: 427013 次
  • 性别: Icon_minigender_1
  • 来自: 深圳/湛江
社区版块
存档分类
最新评论

[ios] iOS html解析1(包含中文字符)

    博客分类:
  • ios
 
阅读更多

 

教你怎么写搜索条件:http://www.raywenderlich.com/14172/how-to-parse-html-on-ios

    NSLog(@"%@",[element.attributes objectForKey:@"value"]);

//返回一个 字典

 

HTMLParser方法可以参考https://github.com/zootreeves/Objective-C-HMTL-Parser

TFHpple方法的使用可以看 https://github.com/topfunky/hpple

 

 

        TFHpple,因为它很简单,也好用,但是它的功能不是很完完善。比如,不能获取children node。它是用XPath来定位和解析html或者xml。

 

     xpath教程:http://www.w3school.com.cn/xpath/index.asp

 

具体的方法可以参考:(英文网址介绍)http://stackoverflow.com/questions/405749/parsing-html-on-the-iphone

                                        (中文网址介绍)http://blog.csdn.net/xiaoxuan415315/article/details/7788955;还要代码下载,不过里面有错

 

 

Objective c代码  收藏代码
  1. <span> NSData *htmlData = [NSString stringWithContentsOfFile:[NSURL URLWithString:@"http://www.baidu.com</span>"] encoding:NSUTF8StringEncoding error:nil];  

 会报:[NSURL getFileSystemRepresentation:maxLength:]: unrecognized selector sent to instance 0x6bcad20

 

Objective c代码  收藏代码
  1. NSData *htmlData  = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"] encoding:NSUTF8StringEncoding error:nil];  

 匹配还是有问题

应该这个更合适点

 

Objective c代码  收藏代码
  1. <span>NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com  
  2. </span>"]];  

 

下面讲一下我自己实现的过程中的关键代码:

 

解析非utf-8页面的思路 :

 

  1. 把网络流返回的NSDate的GB2312(假设是这个)转换成TFHpple能正确解析的UTF-8编码的NSData;
  2. 将其中一行的<meta http-equiv="Content-Type" content="text/html; charset=gb2312">转换成UTF-8形式的

可以采用如下两种方案解决:

方法一:

 

Objective c代码  收藏代码
  1. //转换成GBK编码  
  2.    NSStringEncoding gbEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);  
  3.      
  4.    NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"可以是非utf-8的网页"]];  
  5.    NSString *htmlStr = [[[NSString alloc] initWithData:htmlData encoding:gbEncoding] autorelease];  

 

方法二:

 

Objective c代码  收藏代码
  1. NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"可以是非utf-8的网页"]];  
  2.     CFStringRef bgCFStr = CFStringCreateWithBytes(NULL, [htmlData bytes], [htmlData length], kCFStringEncodingGB_18030_2000, false);  
  3.     NSString *gbHtmlStr = (NSString *)bgCFStr;  

 

方法一或者二选其一,然后加下面的代码就可以实现简单解析了

 

Objective c代码  收藏代码
  1.    NSString *utf8HtmlStr = [htmlStr stringByReplacingOccurrencesOfString:@"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">"   
  2.                                                                 withString:@"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"];  
  3.    NSData *htmlDataUTF8 = [utf8HtmlStr dataUsingEncoding:NSUTF8StringEncoding];  
  4.    TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlDataUTF8];  
  5.   
  6. NSArray *elements  = [xpathParser search:@"//option"];   
  7. TFHppleElement *element = [elements objectAtIndex:0];  
  8. NSString *h3Tag = [element content];   
  9.      
  10.    NSLog(@"%@",h3Tag);  
  11. mLabel.text = h3Tag;  
  12.      
  13.    [xpathParser release];  
  14. [htmlData release];  

 

很有用的网址:http://www.raywenderlich.com/14172/how-to-parse-html-on-ios

 

 

 碰到的问题:NSData --》NSString  

 

                     NSData *htmlData = [htmlStr dataUsingEncoding:NSUTF8StringEncoding];

 

                   NSString --》NSData

 

                      NSString *htmlStr = [[[NSString allocinitWithData:htmlData encoding:NSUTF8StringEncoding]autorelease];

 

分享到:
评论

相关推荐

    iOS html解析源码

    这个“iOS html解析源码”可能包含了一套实现这一功能的代码示例或库。让我们深入探讨一下这个主题,了解如何在iOS上处理HTML。 首先,iOS开发主要使用Swift语言,因此我们讨论的HTML解析源码很可能用Swift编写。...

    iOS解析html

    在iOS开发中,解析HTML...在iOS项目中,"demo"文件可能包含了一个简单的HTML解析示例,你可以通过查看这个示例代码来更好地理解上述知识点。记得在实际应用中,根据HTML结构和业务需求调整解析策略,以达到最佳效果。

    iOS 字符串转中文

    然而,当涉及到中文字符时,我们需要关注Unicode编码,因为Unicode是现代计算机系统中用来表示各种语言字符的标准,包括中文。 对于字符串转中文,首先需要理解的是字符串的编码格式。在iOS中,字符串默认使用UTF-8...

    ios asi框架解析html

    然而,ASI框架本身并不包含HTML解析器,所以需要额外引入解析库。 在获取HTML内容后,我们需要从中提取特定字段。这通常涉及解析DOM(文档对象模型),找到相关的HTML标签和属性。例如,如果我们要提取网页标题,...

    IOS之JSON数据解析

    例如,如果JSON字符串包含数组或者对象中还有其他的数组或对象,SBJson会自动将它们解析为NSArray或NSDictionary。 5. **错误处理** 在实际应用中,我们应该处理可能的解析错误。虽然上面的例子中我们没有显示...

    ios-数据解析.zip

    "ios-数据解析.zip"这个压缩包可能包含了一个解决方案,旨在帮助开发者轻松处理数据解析过程中可能出现的问题,增强程序的健壮性和稳定性。 在iOS应用开发中,数据解析通常涉及JSON或XML格式。JSON(JavaScript ...

    IOS用RCLabel来显示HTML格式的字符串

    `RCLabel`是一个第三方库,它允许开发者在iOS应用中轻松地显示包含HTML标签的字符串,而无需使用`WKWebView`或者`UIWebView`这样的复杂组件。这个库提供了更加轻量级的解决方案,适用于那些只需要简单HTML格式化且对...

    ios开发-json数据解析框架

    在iOS开发中,JSON(JavaScript Object Notation)数据解析是一个重要的环节,因为它是一种轻量级的数据交换格式,广泛用于Web服务和移动应用之间的数据传输。本文将深入探讨JSON在iOS开发中的作用,以及如何利用...

    ios_XML_解析

    iOS xml 解析 本来是喜欢用json的,可服务端的那位大神居然搞不出来 他说他是直接返回一串字符串的,是底层给疯装成xml返回的 嗨,累 网上搜了下,有说用sdk自带的NSXMLParse, 有说用google提供的GDataXML, 还有...

    IOS解析XML文件

    在iOS开发中,解析XML文件是一项常见的任务,特别是在与服务器进行数据交互时。XML(Extensible Markup Language)是一种用于标记数据的语言,具有良好的结构性和可读性,使得它成为网络数据传输的常用格式。本篇...

    iOS开发使用JSON解析网络数据

    JSON的基本数据类型包括字符串(string)、数字(number)、布尔值(boolean)、数组(array)、对象(object)和null。在Objective-C中,这些对应为NSString、NSNumber、BOOL、NSArray、NSDictionary和NSNull。一个...

    ios中xml解析demo

    在本Demo "xmlDemo" 中,可能包含了以上提到的一种或多种XML解析方法的实现示例。通过运行这个Demo,开发者可以在后台看到XML数据被解析并打印出来的结果。这有助于理解每种方法的工作原理,并且为实际项目中的XML...

    iOS特殊字符处理

    总之,iOS开发中特殊字符的处理涵盖了Foundation和CoreFoundation框架中的多种方法,包括NSString、NSData、CFString和CFData等类和函数。开发者需要根据具体场景选择合适的方法,确保数据的安全传输和正确解析。...

    iOS下json解析工具

    iOS下解析json数据,自己亲自使用过,挺好用的。 使用JSONKit的解析方法:(需导入包:#import "JSONKit/JSONKit.h") - (void)printJson{ //如果json是“单层”的,即value都是字符串、数字,可以使用...

    iOS xml解析和json解析demo

    总结一下,这个"iOS xml解析和json解析demo"将涵盖如何在iOS应用中解析XML数据,包括使用NSXMLParser和XMLParser,以及如何解析和序列化JSON数据,包括使用内置的JSONSerialization类和可能涉及的一些第三方库。...

    IOS应用源码之【框架】HTML解析 for iOS.rar

    这个压缩包"【框架】HTML解析 for iOS.rar"显然包含了关于如何在iOS平台上解析HTML内容的相关源码和可能的框架。下面我们将深入探讨HTML解析在iOS中的应用场景、常用框架以及解析过程中的关键知识点。 首先,HTML...

    ios下json数据解析的SBJson 库

    例如,当接收到一个包含用户信息的JSON字符串时,`SBJsonParser`能够将其解析成一个字典,然后开发者可以直接访问其中的数据。 编码方面,SBJson提供`SBJsonWriter`类,可以将Objective-C对象编码为JSON格式的字符...

    IOS版本XML解析类

    3. **命名空间处理**:XML文档中常常包含多个命名空间,GDataXML提供了解析和处理命名空间的功能,使得处理带有命名空间的XML文档变得轻松。 4. **错误处理**:GDataXML在解析过程中会捕获并报告错误,这有助于调试...

    浅谈ios中的json解析(转载)

    本文将深入探讨iOS中如何进行JSON解析,包括基本概念、解析方法以及实际应用示例。 首先,JSON是一种轻量级的文本格式,它基于ECMAScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。JSON数据通常...

    IOS json解析

    "IOS json解析"这个主题涵盖了如何在iOS应用中处理JSON数据,尤其是利用苹果内置的技术进行解析。本文将深入探讨JSON解析的基本概念、苹果提供的解析API以及如何在实际项目中运用。 首先,我们需要了解JSON的结构。...

Global site tag (gtag.js) - Google Analytics