gpt4 book ai didi

html - Hpple,在 之后获取文本

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:06 24 4
gpt4 key购买 nike

所以我认为这是我最后一个 Hpple 问题!我在使用 Hpple 解析的 HTML 文档中找到了一个条目。我尝试了许多不同的查询,但没有运气。这是 HTML 的示例。 HTML

我可以通过//div[@class = 'entry-content']/p 获得以“今天的项目”开头的文本。我还可以使用//div[@class = 'entry-content']//a[@title]//* 获取下一个标签及其后的所有文本。但是,如您所见,“/span”之后仍然有一些文本。但是,我尝试过的任何方法都不起作用。我试过查看元素的子元素,尝试过//div[@class = 'entry-content']/p//text(),//div[@class = 'entry-content']/p//以下::*,没有任何作用。如果有人有任何想法,我洗耳恭听!!!再次感谢您的宝贵时间。

编辑#1当我尝试不同的东西时,我正在查看 HTML。 p 标签下是我需要的文本,“今天的项目...”,然后有一个跨度更改文本颜色并包含一个链接,然后是更多文本。我需要做的是跳过那个跨度继续阅读文本。也许我的问题应该是,如何跳过一个span?感谢您的关注。

编辑 #2 好吧,我要开始赏金了。我真的需要一些帮助。我到处都看过并尝试了很多不同的东西。但是没有什么对我有用。在那个封闭的跨度之后我无法获得文本。而且这种格式经常出现。我正在为App解析此博客的作者有时会更改她的文字样式,而她更改样式后我无法获取文本。任何帮助,将不胜感激。再次感谢您的关注。

编辑 #3 这是 DOM 树 HTML 的另一个屏幕截图。如果你能注意到我正在解析 div 类“条目内容”,就会暴露有问题的文本。从“今天...”开始,然后跨度更改文本的颜色,我可以获得该文本。我需要的是在那之后的文字,“它是一个......”就在关闭 p 标签之前。

Dom Tree

我还将整个 HTML 放在了要点上。 HERE .有问题的行是 102。虽然 HTML 没有很好地复制。谢谢。

最佳答案

对代码进行一些更改以进一步了解层次结构,它适用于您的 html 示例。注意:我将所有条目内容附加到单个 NSMutableString 中以使其更容易。就像我在评论中警告过你的那样,谨慎使用它。 :-)

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]; 
NSData *data = [NSData dataWithContentsOfFile:filePath];
TFHpple *detailParser = [TFHpple hppleWithHTMLData:data];
NSString *xpathQueryString = @"//div[@class='entry-content']";
NSArray *node = [detailParser searchWithXPathQuery:xpathQueryString];

NSMutableString *test = [[NSMutableString alloc] initWithString:@""];

for (TFHppleElement *element in node) {
for (TFHppleElement *child in element.children) {
if (child.content != nil) {
[test appendString:child.content];
}
if ([child.children count]!= 0) {
for (TFHppleElement *grandchild in child.children) {
if (grandchild.content != nil) {
[test appendString:grandchild.content];
}
for (TFHppleElement *greatgrandchild in grandchild.children) {
if (greatgrandchild.content != nil) {
[test appendString:greatgrandchild.content];
}
for (TFHppleElement *greatgreatgrandchild in greatgrandchild.children) {
if (greatgreatgrandchild.text != nil) {
[test appendString:greatgreatgrandchild.text];
}
if (greatgreatgrandchild.content != nil) {
[test appendString:greatgreatgrandchild.content];
}
}
}
}
}
}
}

NSLog(@"test = %@", test);

关于html - Hpple,在 </span> 之后获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com