试图从网页上抓取html,但没有为Document.getClass获得正确的类名/层次结构

时间:2018-10-11 04:49:42

标签: javascript

我正在尝试从一个网页中获取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))
    }
}

1 个答案:

答案 0 :(得分:1)

没有getElementByClass DOM函数。最接近的匹配为getElementsByClassName(请注意sName),但这将接受单个类并返回一个数组。

您可能想改用document.querySelectorAll,并且可以直接为其提供完整的CSS选择器(因此,您需要在类的前面加上.,在id上加上#,并且不留空格对于同一元素上的类:

document.querySelectorAll('.tag-links a')

如果页面中只有一个类别为tag-links的元素,就足够了。