在iphone中parsingHTMLurl
我如何parsing一个html文件?
我需要span标记之间的数据。
<div id=currency_converter_result>1 AED = <span class=bld>0.4765 ANG</span>
如果你只需要标签“span”,你可以使用NSRegularExpression,比如这个
NSString *html = @"<div id=currency_converter_result>1 AED = <span class=bld>0.4765 ANG</span>"; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<span[^>]*>(.+?)</span>" options:NSRegularExpressionCaseInsensitive error:nil]; NSTextCheckingResult *textCheckingResult = [regex firstMatchInString:html options:0 range:NSMakeRange(0, html.length)]; NSLog(@"found: '%@'", [html substringWithRange:[textCheckingResult rangeAtIndex:1]]);
或者,我更喜欢从xml或html数据创buildNSDictionary并使用它。 你可以用XML-to-NSDictionary库来做到这一点。
看看这个: https : //github.com/zootreeves/Objective-C-HMTL-Parser
基本用法:
NSError *error = nil; NSString *htmlString = @"<div id=currency_converter_result>1 AED = <span class=bld>0.4765 ANG</span>"; HTMLParser *p = [[HTMLParser alloc] initWithString:htmlString error:&error]; if (error) { NSLog(@"Error: %@", error); return; } HTMLNode *bodyNode = [p body]; NSArray *spanNodes = [bodyNode findChildTags:@"span"]; for (HTMLNode *spanNode in spanNodes) { if ([[spanNode getAttributeNamed:@"class"] isEqualToString:@"bld"]) { NSLog(@"%@", [spanNode rawContents]); //Answer to second question } }
由于XHTML是XML,所以可以考虑使用NSXMLParser:
@interface HTMLParser: NSObject <NSXMLParserDelegate> // or whichever superclass you have { // own declarations NSMutableString *str; NSXMLParser *parser; } // somewhere in a method of self, for example, init, or something named -(void) parseHtml - (void) parseHtml { parser = [[NSXMLParser alloc] initWithData:[@"<div id=currency_converter_result>1 AED = <span class=bld>0.4765 ANG</span>" dataUsingEncoding:NSUTF8StringEncoding]]; // of course you can substitute any string you want here, for example, the result of [NSString stringWithContentsOfFile:@"inex.html"] or whatever you need. parser.delegate = self; [parser parse]; [parser release]; } - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { if ([elementName isEqualToString:@"span"] && [[attributeDict objectForKey:@"class"] isEqualToString:@"bld"]) { str = [NSMutableString string]; } } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { [str appendString:string]; } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if ([elementName isEqualToString:@"span"]) { // now str contains the value you want! DoSomethingWith(str); } }
希望这可以帮助。
- 如何在UIWebView中caching内容以便稍后加载?
- iOS绑定javascript函数来点击<html>
- iPhone上的Safari有没有等同于Android的<meta name ='viewport'content ='target-densitydpi = device-dpi'>?
- 4个免费(有趣)工具可帮助您成为更好的编码员
- 当地址栏被隐藏/显示时,内容在Chrome iOS上垂直跳转,并具有视口大小
- HTML电子邮件丢失在iPhone上太长时间格式化
- 背景:封面在移动浏览器上不能缩放
- iOS Safariselect多个选项进行单一select
- 如何允许缩放UIWebView(尝试一切)