在 Xcode 9 中用 Swift 4 抓取一个 html

Scraping an html with Swift 4 in Xcode 9

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

"

所以我得到一个数组:[href="/thisIsAlwaysTheSame/UniqueNumberA/, href="/thisIsAlwaysTheSame/UniqueNumberB, href="/thisIsAlwaysTheSame/UniqueNumberC, etc.]" 网站上还有很多 link,但我只需要具有这种格式的。 或者,如果我只将 UniqueNumbers 放入数组中,我也会很高兴。

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

这是我从我的研究中已经知道的以及 reddit 上的答案:

有什么建议吗?感谢您的帮助!

如果我没理解错的话,您想从 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)
    }
}

我在添加 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)")
}