在Xcode 9中使用Swift 4刮取html

问题描述 投票:0回答:2

好的,我有一个网站,我想抓取特定的链接。我已经使用URLSession将所有网站内容放入一个字符串中。现在我必须将所有链接都放入一个具有以下结构的数组中:

“<a href =”/ thisIsAlwaysTheSame / ThisIsAUniqueNumber / ThisIsWhatIDontNeed ......“

所以我得到一个数组:[href =“/ thisIsAlwaysTheSame / UniqueNumberA /,href =”/ thisIsAlwaysTheSame / UniqueNumberB,href =“/ thisIsAlwaysTheSame / UniqueNumberC等]”网站上有更多链接,但我只需要那些有这种格式的人。如果我只将UniqueNumbers放入数组中,我也会很高兴。

我已经在reddit上问了这个问题,但没有得到足够的答案:https://www.reddit.com/r/swift/comments/7256vi/scraping_an_html_with_swift_4_in_xcode_9/

以下是我已经从我的研究中得知的以及reddit的答案:

  • 建议使用“Kanna” - >我无法在Xcode 9中运行它(我已经在GitHub上打开了一个问题)
  • SwiftSoup可能是一个选项 - >像Kanna一样的问题,无法让它在Xcode 9中运行(我也在Github上打开了一个问题)
  • 我得到了一个建议,我可以用Swift字符串类来解决我的问题,阅读以下链接:https://developer.apple.com/documentation/swift/string - >我读了它但是我真的没有看到如何用这些方法解决我的问题。也许我错过了那里的东西?

有什么建议?谢谢你的帮助!

html ios parsing swift4 xcode9
2个回答
1
投票

我在添加SwiftSoup后使用了以下代码:

guard let linkElements: Elements = try SwiftSoup.parse(myLinkHTMLContent).select("a")  else {return}
//  Now all elements are printed into an array
for element: Element in linkElements.array(){
myLinksArray.append("\(element)")
}

0
投票

如果我理解正确,您希望从HTML字符串中提取所有URL。您可以通过添加一个循环来检查字符串中的任何URL:

let detector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
let matches = detector.matches(in: content, options: [], range: NSRange(location: 0, length: content.utf16.count))
for match in matches {
    let url = (content as NSString).substring(with: match.range)
    if url.contains("ThisIsWhatIDontNeed") {
        //do smtg
    } else {
        self.img_urls.append(url)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.