這是在html()
輸出內,它在網上嘗試jsoup的作品,我可以得到其他ID,如root
沒有問題。
同樣的方法一直在爲其他頁面工作,唯一的區別是我可以看到的是,有很多其他元素的ID在體內的前綴爲threadlist_row_
。
其他各種選擇器如getElementsByClass("aclb")
也似乎不會返回此頁面的完整列表。
任何人都可以在這個問題上得到任何解釋嗎?
這是在html()
輸出內,它在網上嘗試jsoup的作品,我可以得到其他ID,如root
沒有問題。
同樣的方法一直在爲其他頁面工作,唯一的區別是我可以看到的是,有很多其他元素的ID在體內的前綴爲threadlist_row_
。
其他各種選擇器如getElementsByClass("aclb")
也似乎不會返回此頁面的完整列表。
任何人都可以在這個問題上得到任何解釋嗎?
在你的情況下,Jsoup不會按照你的預期工作。加載頁面後,id爲threadlist_rows
的元素由JavaScript函數呈現。 Jsoup不解釋任何JavaScript代碼 - 它只適用於靜態HTML。您可以通過調查頁面源代碼(Ctrl + U)或暫時關閉Web瀏覽器中的JavaScript來「模擬」Jsoup看到的內容。
考慮使用替代品,如:
您也可以嘗試在本主題中提到的事情:https://stackoverflow.com/a/39174441/2194470(使用PhantomJS下載HTML並使用Jsoup操作DOM結構)。這對你來說可能是最好的選擇。希望它有幫助:)
太好了。對於那些有同樣問題的人來說,由於Android的Webviews優化,我決定採取這種方式,即使它不是無頭的。也可以重載資源加載忽略所有圖像和CSS來提高一些加載時間,因爲這些對於不可見視圖來說不是必需的。 JS將被注入webview的觀察者處理。 –
太棒了,艾倫!祝你的項目好運:) –
它不會與Jsoup一起工作,因爲Jsoup只解析靜態HTML。帶有您提到的ID的元素是動態創建的(JavaScript),Jsoup不會執行任何JavaScript代碼。檢查PhantomJS庫(https://stackoverflow.com/a/39369662/2194470) –
@SzymonStepniak,但不應該它的工作,如果HTML方法確實顯示該ID已經存在?加載後,元素不會被添加。我將不得不檢查aclb元素,因爲這可能是不同的情況。 –
不,這個元素在Jsoup打開網站時不存在。它顯示在Web瀏覽器中,因爲Web瀏覽器會解釋創建此元素的JavaScript代碼。 Jsoup不解釋任何JavaScript,所以這個元素永遠不會顯示爲Jsoup。如果您需要解釋JavaScript的解決方案,您將不得不仔細查看諸如PhantomJS(它解釋JavaScript) –