2016-08-08 57 views
2

我正在使用Jsoup從不同的商店獲取一些在線數據,但我無法弄清楚如何以編程方式複製我作爲用戶所做的工作。要手動獲取數據(登錄後),用戶必須從彈出的a tree中選擇一個商店。帶插件的Jsoup

盡我所知,樹並不是硬編碼到網站中,而是在您的計算機與服務器交互時以交互方式構建。當您在「查看頁面源代碼」中查找表格時,沒有條目。當我inspect the tree,我看到的HTML,它似乎來自「FancyTree」插件。

盡我所知,通過跟蹤我在Developer Tools - Network上的活動,下一步是一個「GET」請求,它不會更改URL,所以我不確定我的商店選擇如何轉入。

有關如何讓Jsoup或Java通常以編程方式與此表進行交互的任何建議將非常有用,謝謝!

+0

現在DOMS太動態了,希望能解析HTML並獲得任何有用的東西。您需要使用像Selenium這樣的工具來遠程控制瀏覽器。這樣,你可以讓它找到按鈕和下拉菜單,選擇正確的元素,讓JS​​正確執行,然後在一切正確時向瀏覽器詢問DOMS當前狀態。然後你可以用jsoup解析它。如果這是一個使用Linux的服務器端應用程序,那麼您仍然可以使用xvfb(有幫助的提示,如果是這種情況)執行所有操作。 – Quaternion

+0

感謝您的支持,如果我可以點評評論,我會贊成! – Cory

回答

1

Jsoup只能解析原始源文件,而不是DOM。爲了解析DOM,您需要使用HtmlUnit之類的東西來渲染頁面。然後你可以用Jsoup解析html內容。

// load page using HTML Unit and fire scripts 
WebClient webClient = new WebClient(); 
HtmlPage myPage = webClient.getPage(myURL); 

// convert page to generated HTML and convert to document 
doc = Jsoup.parse(myPage.asXml()); 

// do something with html content 
System.out.println(doc.html()); 

// clean up resources   
webClient.close(); 

請參閱Parsing Javascript Generated Page with Jsoup

+1

這非常有幫助,謝謝! – Cory