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页面的思路 :
- 把网络流返回的NSDate的GB2312(假设是这个)转换成TFHpple能正确解析的UTF-8编码的NSData;
- 将其中一行的<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开发主要使用Swift语言,因此我们讨论的HTML解析源码很可能用Swift编写。...
在iOS开发中,解析HTML...在iOS项目中,"demo"文件可能包含了一个简单的HTML解析示例,你可以通过查看这个示例代码来更好地理解上述知识点。记得在实际应用中,根据HTML结构和业务需求调整解析策略,以达到最佳效果。
然而,ASI框架本身并不包含HTML解析器,所以需要额外引入解析库。 在获取HTML内容后,我们需要从中提取特定字段。这通常涉及解析DOM(文档对象模型),找到相关的HTML标签和属性。例如,如果我们要提取网页标题,...
`RCLabel`是一个第三方库,它允许开发者在iOS应用中轻松地显示包含HTML标签的字符串,而无需使用`WKWebView`或者`UIWebView`这样的复杂组件。这个库提供了更加轻量级的解决方案,适用于那些只需要简单HTML格式化且对...
4. **HTMLKit**:这是一个开源库,专门为iOS和macOS设计,提供了更方便的HTML解析和操作功能。HTMLKit提供了DOM(文档对象模型)接口,类似于Web浏览器中的JavaScript环境。 5. **NSXMLDocument** 和 **...
这个压缩包"【框架】HTML解析 for iOS.rar"显然包含了关于如何在iOS平台上解析HTML内容的相关源码和可能的框架。下面我们将深入探讨HTML解析在iOS中的应用场景、常用框架以及解析过程中的关键知识点。 首先,HTML...
MWFeedParser是一个Objective-C的RSS/Atom Feed解析器,它可以帮助开发者更方便地处理包含HTML内容的feed项,包括HTML实体的解析。 MWFeedParser通过其内置的功能,可以自动处理HTML实体,使得在UIWebView中展示RSS...
HTML字符串与富文本之间的转换在iOS开发中是一个常见的需求,特别是在处理从服务器获取的数据时,这些数据可能包含HTML标签,需要在本地应用中正确显示。本文将深入探讨这个主题,并结合给定的"NSAttributedString4...
1. **解析文本**:首先,我们需要解析输入的微博内容,查找所有的“@”和“#”字符。这可以通过遍历字符串并检测特定模式来实现,如“@用户名”和“#话题名”。 2. **创建链接**:找到这些模式后,我们可以创建`...
1. **HTML解析器**:为了在`UITextView`中渲染HTML,我们需要一个解析器将HTML代码转化为`NSAttributedString`对象。`NSAttributedString`是iOS中用于表示带有属性(如字体、颜色、下划线等)的文本的类。常见的解析...
在iOS开发中,`UIWebView` 是一个非常重要的组件,用于在应用内展示网页内容。在某些场景下,我们可能需要获取`UIWebView`中加载的HTML页面的特定标签,以便进行进一步的操作,如解析数据、修改样式或者处理链接。本...
5. **HTML解析**:将HTML内容转换为NSAttributedString,方便从网络获取的HTML文本在iOS应用中展示。 在`MyAttributedStringDemo`这个压缩包文件中,包含了库的示例项目。通过运行和查看源代码,开发者可以更直观地...
- FTCoreTextLabel 类的实现,包括 HTML 解析方法和 CoreText 的绘制逻辑。 - 示例代码,展示如何创建 FTCoreTextLabel 对象,设置 HTML 文本,以及处理点击事件等。 通过学习和理解这些源码,开发者可以更深入地...
这个“IOS应用源码——XML解析.zip”文件包含了一个iOS应用程序的源代码,专注于XML数据的解析。理解XML解析在iOS应用开发中的作用以及如何在Objective-C或Swift中实现这一功能,对于提升iOS开发技能至关重要。 ...
它包含了对常见浏览器和设备的识别,帮助开发者快速识别用户所使用的设备类型(如移动设备、桌面电脑)、浏览器类型(如Chrome、Firefox)及其版本信息,甚至可以探测到操作系统(如Windows、iOS、Android)。...
1. **HTML字符串**:HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言。它由一系列标签组成,这些标签描述了页面的结构和内容。例如,`<p>`用于段落,`<h1>`到`<h6>`用于标题,`<a>`用于链接,`...
1. HTML解析器:这部分代码负责将HTML字符串转换成NSAttributedString对象,这通常涉及到对HTML字符串的逐行、逐标签解析,以及对每个标签的属性进行映射,例如颜色、字体、大小等。 2. 自定义TextView:可能创建了...
1. **浏览器兼容性**:大多数现代浏览器都支持Unicode字符,包括emoji。但为了确保广泛的兼容性,开发者应该使用HTML实体或者JavaScript编码来处理emoji。例如,可以使用HTML5的`😀`这样的实体引用,或者使用...
7. **可扩展性**:`CMHTMLView` 设计上具有良好的可扩展性,开发者可以根据需求添加额外的功能或者适配器,如自定义Web字体加载、自定义的HTML解析策略等。 在实际使用`CMHTMLView` 时,开发者需要注意以下几点: ...