2014-01-21 91 views
0

我與內容解析工作,我執行這個示例程序我已經採取了樣本連接 請訪問以下鏈接動態內容解析

http://www.equitymaster.com/stockquotes/sector.asp?sector=0%2CSOFTL&utm_source=top-menu&utm_medium=website&utm_campaign=performance&utm_content=key-sector

Click Here

在上面的鏈接中,我解析了表數據並存儲到java對象中。

瘋牛病和NSE不是我的確切要求,只是我採取的示例。上面的鏈接是在表格中開發的,它們沒有使用id和類。在我的例子中,我使用XPath

解析數據,這是我的Xpath

/html/body/table[4]/tbody/tr/td/table[2]/tbody/tr[2]/td[2]/font/table[2] 

我選擇解析它工作正常。如果他們更改網站結構我的程序將無法正常工作,這裏是未來的問題。告訴我任何其他方式動態解析數據並能夠存儲在數據庫中。即使他們更改了網頁結構我也用這個JSOUP API來顯示結果。告訴我任何其他ApI爲這種類型的需求提供最好的支持

回答

1

如果你試圖解析一個頁面沒有任何明確的id/class來選擇你的節點,你必須嘗試和依賴別的東西。重新定義整棵樹確實是最弱的方法,如果有任何東西被添加/改變,一切都將崩潰。

你可以嘗試依靠顏色://table[@bgcolor="#c9d0e0"],「查看更多信息」字段://table[tr/td//text()="GET MORE INFO"],「更多信息」上有每行://table[.//td//text()="&nbspMore Info&nbsp"] ...

的想法是找到理想的唯一(如果你找不到任何獨特的標準,table[color condition selecting a few tables][2]仍然走在整棵樹上),每一次都會出現,並用它作爲ID。

+0

用顏色選擇它正在工作罰款表[bgcolor =#c9d0e0]。爲了更好的事情,我嘗試了以下元素elem = doc.select(「table:contains(SCRIPT)」);它顯示父表也how.how選擇特定的表 – sarath

+0

真的不知道你的意思...這是什麼「SCRIPT」?如果這選擇父節點,你可以通過'node // table'來查看所有附表,但我相信你已經知道 – Robin

+0

腳本表頭 – sarath