gpt4 book ai didi

javascript - 如何使用 SwiftSoup 抓取重定向的特定网站?

转载 作者:搜寻专家 更新时间:2023-10-31 22:53:06 25 4
gpt4 key购买 nike

我正在尝试使用 SwiftSoup 使 Swift 抓取网站。然而,像这样的网站:https://apple.news/AQZXxg8mUQfKrEaM9MRBpxw ,它会使用 JavaScript 自动重定向,这会导致 SwiftSoup 抓取起始页面而不是我想要的实际文章。我应该如何抓取此链接,以便它抓取有问题的实际文章而不是重定向的封面网页?

我曾尝试使用状态代码,但这个特定网站没有提供 301 或 302 状态代码,而是提供状态代码 200。我尝试抓取链接 HTML 的 JavaScript 部分,但我没有确切地知道如何处理它。

最佳答案

func redirectUrl() {

let url = URL(string: "https://apple.news/AQZXxg8mUQfKrEaM9MRBpxw")!

URLSession.shared.dataTask(with: url) { (data, response, error) in

let html = String(data: data!, encoding: .utf8) ?? "none"
self.parse(html: html)

}.resume()


}

func parse(html: String) {

do {

let doc = try SwiftSoup.parse(html)
let link: Element = try doc.select("a").first()!
let linkHref = try link.attr("href")

print(linkHref)
} catch let error {
print(error.localizedDescription)
}

}

这将在打印中

https://www.npr.org/2019/06/18/733401736/npr-identifies-fourth-attacker-in-civil-rights-era-cold-case

这将适用于重定向 url

func redirectLink(url: URL, completion: @escaping (URL?) -> Void) {

var request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 15.0)
request.httpMethod = "HEAD"

URLSession.shared.dataTask(with: request) { (data, response, error) in

if let response = response {
completion(response.url)
}

}.resume()

}

关于javascript - 如何使用 SwiftSoup 抓取重定向的特定网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654708/

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