gpt4 book ai didi

html - NSXMLDocumentTidyHTML 没有整理一些 XHTML 验证错误

转载 作者:行者123 更新时间:2023-11-27 22:52:20 25 4
gpt4 key购买 nike

我想从网页列表中抓取文本。我做了一些试验,发现满足我需求的最佳方法是通过 WebKit。

获取页面源后,我想使用 the technique in this comment. 去除所有 HTML 标签。

这是我的代码:

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {
if(frame == [sender mainFrame]) {
NSString *content = [[[[sender mainFrame] dataSource] representation] documentSource];
NSXMLDocument *theDocument = [[NSXMLDocument alloc] initWithXMLString:content options:NSXMLDocumentTidyHTML error:&theError];
NSString *theXSLTString = @"<?xml version='1.0' encoding='utf-8'?>\n<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:xhtml='http://www.w3.org/1999/xhtml'>\n<xsl:output method='text'/>\n<xsl:template match='xhtml:head'></xsl:template>\n<xsl:template match='xhtml:script'></xsl:template>\n</xsl:stylesheet>";
NSData *theData = [theDocument objectByApplyingXSLTString:theXSLTString arguments:nil error:&theError];
NSString *theString = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding];
}
}

这在大多数页面上都能正常工作。但是,如果一个页面没有正确验证为 XHTML,我有时会从我的 initWithXMLString: 方法中得到一个错误。

这很公平 - 我要求它整理 XHTML,所以我希望它报告遇到的问题。但如果验证出现问题,它会返回 nil 和一个错误,而不是实际整理 XHTML。

导致问题的一个特定页面是 the Ruby class documentation.

我发现优秀的第三方HTML tidy应用程序可以很好地清理这个 XHTML,但我希望 NSXMLDocumentTidyHTML 能够只在 cellpadding 值周围添加一些引号。这是一个相当基本的清理操作。而且我不想在我的代码库中添加另一个依赖项。

Cocoa 清理 XHTML 的方式是否遗漏了什么?还是我只需要硬着头皮在我的代码中改用 HTML Tidy?

最佳答案

XHTML 文档被视为 XML,因此使用 NSXMLDocumentTidyXML 标志可能会更好。

关于html - NSXMLDocumentTidyHTML 没有整理一些 XHTML 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1032241/

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