`
synchronized_lala
  • 浏览: 41101 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多

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

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

 

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

     hpple解析html中可能存在的问题:http://www.ccbase.net/post/66.html

     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;还要代码下载,不过里面有错

 

NSData *htmlData = [NSString stringWithContentsOfFile:[NSURL URLWithString:@"http://www.baidu.com"] encoding:NSUTF8StringEncoding error:nil];

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

 

NSData *htmlData  = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"] encoding:NSUTF8StringEncoding error:nil];

 匹配还是有问题

应该这个更合适点

 

NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"]];

 

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

 

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

 

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

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

方法一:

 

 //转换成GBK编码
    NSStringEncoding gbEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
    
    NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"可以是非utf-8的网页"]];
    NSString *htmlStr = [[[NSString alloc] initWithData:htmlData encoding:gbEncoding] autorelease];
 

方法二:

 

NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"可以是非utf-8的网页"]];
    CFStringRef bgCFStr = CFStringCreateWithBytes(NULL, [htmlData bytes], [htmlData length], kCFStringEncodingGB_18030_2000, false);
    NSString *gbHtmlStr = (NSString *)bgCFStr;

 

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

 

    NSString *utf8HtmlStr = [htmlStr stringByReplacingOccurrencesOfString:@"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">" 
                                                                 withString:@"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"];
    NSData *htmlDataUTF8 = [utf8HtmlStr dataUsingEncoding:NSUTF8StringEncoding];
    TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlDataUTF8];

	NSArray *elements  = [xpathParser search:@"//option"]; 
	TFHppleElement *element = [elements objectAtIndex:0];
	NSString *h3Tag = [element content]; 
    
    NSLog(@"%@",h3Tag);
	mLabel.text = h3Tag;
    
    [xpathParser release];
	[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 alloc] initWithData:htmlData encoding:NSUTF8StringEncoding] autorelease];

 

 

 

 

 

分享到:
评论

相关推荐

    iOS html解析源码

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

    iOS解析html

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

    ios asi框架解析html

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

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

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

    ios解析html

    4. **HTMLKit**:这是一个开源库,专门为iOS和macOS设计,提供了更方便的HTML解析和操作功能。HTMLKit提供了DOM(文档对象模型)接口,类似于Web浏览器中的JavaScript环境。 5. **NSXMLDocument** 和 **...

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

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

    HTML标签实体解析

    MWFeedParser是一个Objective-C的RSS/Atom Feed解析器,它可以帮助开发者更方便地处理包含HTML内容的feed项,包括HTML实体的解析。 MWFeedParser通过其内置的功能,可以自动处理HTML实体,使得在UIWebView中展示RSS...

    HTML字符串与富文本互转(加载本地html) demo 源码

    HTML字符串与富文本之间的转换在iOS开发中是一个常见的需求,特别是在处理从服务器获取的数据时,这些数据可能包含HTML标签,需要在本地应用中正确显示。本文将深入探讨这个主题,并结合给定的"NSAttributedString4...

    IOS高访新浪微博界面(处理@#链接 特殊字符 )(二)

    1. **解析文本**:首先,我们需要解析输入的微博内容,查找所有的“@”和“#”字符。这可以通过遍历字符串并检测特定模式来实现,如“@用户名”和“#话题名”。 2. **创建链接**:找到这些模式后,我们可以创建`...

    ios应用源码之在text view上可进行html样式任意文字排列的组件 2018127

    1. **HTML解析器**:为了在`UITextView`中渲染HTML,我们需要一个解析器将HTML代码转化为`NSAttributedString`对象。`NSAttributedString`是iOS中用于表示带有属性(如字体、颜色、下划线等)的文本的类。常见的解析...

    ios webView获取html标签

    在iOS开发中,`UIWebView` 是一个非常重要的组件,用于在应用内展示网页内容。在某些场景下,我们可能需要获取`UIWebView`中加载的HTML页面的特定标签,以便进行进一步的操作,如解析数据、修改样式或者处理链接。本...

    iOS属性字符串封装库

    5. **HTML解析**:将HTML内容转换为NSAttributedString,方便从网络获取的HTML文本在iOS应用中展示。 在`MyAttributedStringDemo`这个压缩包文件中,包含了库的示例项目。通过运行和查看源代码,开发者可以更直观地...

    FTCoreText UILable实现html解析效果 (源码)

    - FTCoreTextLabel 类的实现,包括 HTML 解析方法和 CoreText 的绘制逻辑。 - 示例代码,展示如何创建 FTCoreTextLabel 对象,设置 HTML 文本,以及处理点击事件等。 通过学习和理解这些源码,开发者可以更深入地...

    IOS应用源码——XML解析.zip

    这个“IOS应用源码——XML解析.zip”文件包含了一个iOS应用程序的源代码,专注于XML数据的解析。理解XML解析在iOS应用开发中的作用以及如何在Objective-C或Swift中实现这一功能,对于提升iOS开发技能至关重要。 ...

    JavaUser-Agent解析库

    它包含了对常见浏览器和设备的识别,帮助开发者快速识别用户所使用的设备类型(如移动设备、桌面电脑)、浏览器类型(如Chrome、Firefox)及其版本信息,甚至可以探测到操作系统(如Windows、iOS、Android)。...

    webview渲染HT ML标签字符串

    1. **HTML字符串**:HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言。它由一系列标签组成,这些标签描述了页面的结构和内容。例如,`&lt;p&gt;`用于段落,`&lt;h1&gt;`到`&lt;h6&gt;`用于标题,`&lt;a&gt;`用于链接,`...

    IOS应用源码——在text View上可进行html样式任意文字排列的组件.zip

    1. HTML解析器:这部分代码负责将HTML字符串转换成NSAttributedString对象,这通常涉及到对HTML字符串的逐行、逐标签解析,以及对每个标签的属性进行映射,例如颜色、字体、大小等。 2. 自定义TextView:可能创建了...

    web支持ios表情

    1. **浏览器兼容性**:大多数现代浏览器都支持Unicode字符,包括emoji。但为了确保广泛的兼容性,开发者应该使用HTML实体或者JavaScript编码来处理emoji。例如,可以使用HTML5的`&#x1F600;`这样的实体引用,或者使用...

    iOS源码之展示富文本的类库CMHTMLView .rar

    7. **可扩展性**:`CMHTMLView` 设计上具有良好的可扩展性,开发者可以根据需求添加额外的功能或者适配器,如自定义Web字体加载、自定义的HTML解析策略等。 在实际使用`CMHTMLView` 时,开发者需要注意以下几点: ...

Global site tag (gtag.js) - Google Analytics