我正在尝试从网站上抓取一些数据,因为没有API,我正在尝试使用ALAMOFIRE + KANNA
我可以在控制台中打印我的结果,但是当我尝试在String中转换以在我的应用程序中使用它时,它会说:
无法转换类型的值&Kanana.libxmlHTMLNode' (0x10887d210)到' NSString' (0x108efc0d0)。
为什么我不能使用as将数据转换为String!串
我的代码
var competitions:[String] = []
// Grabs the HTML
func scrapeData() -> Void {
Alamofire.request("MYWEBSITE.com").responseString { response in
print("\(response.result.isSuccess)")
if let html = response.result.value {
self.parseHTML(html: html)
}
}
}
func parseHTML(html: String) -> Void {
if let doc = try? Kanna.HTML(html: html, encoding: String.Encoding.utf8) {
do {
// Search for nodes by XPATH selector
for competition in doc.xpath("""
//*[@id="page_teams_1_block_teams_index_club_teams_2"]/ul
""") {
let competitionName = competition.at_xpath("li/div/a")
print(competitionName?.content ?? "N/A")
competitions.append(competition as! String)
答案 0 :(得分:1)
competition
是libxmlHTMLNode
,而不是String
。您不能简单地将一种类型的对象强制转换为另一种不相关的类型。
您很可能希望将competitionName
而不是competition
附加到字符串数组中。但您需要使用其String
属性将其转换为text
:
competitions.append(competitionName?.text ?? "N/A")