获取 hpple 中的 HTML 标签以及文本



下面的代码从某个div中获取所有文本。我可以从div 中获取所有文本以及 html 属性吗?所以它还将所有<p> </p>'s<br> </br>'s添加到字符串中,myString?

//trims string from previous page
        NSString *trimmedString = [stringy stringByTrimmingCharactersInSet:
                                 [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    NSData *data = [[NSString stringWithContentsOfURL:[NSURL URLWithString:trimmedString]] dataUsingEncoding:NSUTF8StringEncoding];
    TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:data];    
    NSArray *elements  = [xpathParser searchWithXPathQuery:@"//div[@class='field-item even']"];
    TFHppleElement *element = [elements lastObject]; //may need to change this number?!
    NSString *mystring = [self getStringForTFHppleElement:element];
    trimmedTextView.text = [trimmedTextView.text stringByAppendingString:mystring];

这里的方法:

-(NSString*) getStringForTFHppleElement:(TFHppleElement *)element 
{
NSMutableString *result = [NSMutableString new];
// Iterate recursively through all children
for (TFHppleElement *child in [element children])
    [result appendString:[self getStringForTFHppleElement:child]];
// Hpple creates a <text> node when it parses texts
if ([element.tagName isEqualToString:@"text"])
    [result appendString:element.content];
return result;
}

任何想法将不胜感激。干杯。

试试这个:

NSString *htmlDataString = [webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"];

这会将所有 HTML 删除为字符串。然后,您可以在本机代码中解析它并找到您感兴趣的div,您在上面的示例中所做的工作。

您也可以使用 HTML 中的任何 DOM 元素来做到这一点,例如:

NSString *htmlDataString = [webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.getElemenById('mydiv')"];

这更有效率,但需要一点JavaScript技能。

最新更新