我正在尝试从一个网页中获取3个<a> some text </a>
链接的文本,并且正在使用一种Swift方法,该方法使用JavaScript来获取class / id / html元素以对其进行抓取。除此之外,我没有从html获得正确的类或ID。
我尝试使用document.getElementsByClassName/Id
并将所有的类/ id调用为所需的类/ id,但出现错误:
'document.getElementByClass('col-sm-12 col-md-9')', 'document.getElementByClass' is undefined
我不知道为什么。有人可以指出我正确的方向来解决这个问题还是指出我的错误?
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
//I'm calling all the classes and ids
webView.evaluateJavaScript("document.getElementByClass('col-sm-12 col-md-9').document.getElementById('content-top').getElementsByClassName('item hero-container item-container item-content tag-links')") {(result, error) in
guard error == nil else {
print(error!)
return
}
print(String(describing: result))
}
}
答案 0 :(得分:1)
没有getElementByClass
DOM函数。最接近的匹配为getElementsByClassName
(请注意s
和Name
),但这将接受单个类并返回一个数组。
您可能想改用document.querySelectorAll
,并且可以直接为其提供完整的CSS选择器(因此,您需要在类的前面加上.
,在id上加上#
,并且不留空格对于同一元素上的类:
document.querySelectorAll('.tag-links a')
如果页面中只有一个类别为tag-links
的元素,就足够了。