gpt4 book ai didi

iOS Swift NSXMLPARSER 不解析整个网站

转载 作者:行者123 更新时间:2023-11-29 01:22:32 25 4
gpt4 key购买 nike

我在 Swift 上使用 NSXMLParser 时遇到了一个奇怪的情况。

我有以下代码开始从 url 解析一个完整的网站

  func xmlAnalyser(tmp_http: String, tmp_url: String) {
let tmp_str: String = tmp_http + tmp_url
let url = NSURL(string: tmp_str)

ParserXML = NSXMLParser(contentsOfURL: url!)!
ParserXML.delegate = self
ParserXML.parse()
}

例如,对于 http://www.techcrunch.com Parser 没有解析整个 XML,一些链接标签被不知何故跳过,我想不出来,例如,用下面的方法

  func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {

print("elementName: \(elementName)")

if elementName == "link" {
let type = attributeDict["type"]
if type == "application/rss+xml" {
print("feed found: \(href)")
} else {
print("not found")
}
}
}

不知何故,解析器找不到类型“application/rss+xml”,但如果我查看网站源代码,它就在那里。并非所有网站都会出现这种情况,例如,如果我尝试使用 mashable.com,则会找到 rss 标签,但在 techcrunch 上却找不到。

是不是XML太大了?我是否必须将它存储在两个不同的变量中,然后一个一个地解析它们?

最佳答案

尝试 HTMLKit .它也可以与 Swift 一起使用。为了解决您的特定问题,它会是这样的:

import HTMLKit
let document = HTMLDocument(string: htmlString) // htmlString is the source of the HTML page
let rssLinks = document.querySelectorAll("link[type='application/rss+xml']")
// you get an array of HTMLElements
for link in links {
print(link.outerHTML)
print(link["href"])
// and so on ...
}

HTMLKit 是一个纯 Objective-C HTML 解析器,支持 CSS3 选择器。它不是 libxml 或任何其他库的包装器,而是一个完整的 WHATWG HTML 规范兼容实现。

关于iOS Swift NSXMLPARSER 不解析整个网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426977/

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