Re: [問題] 又來問問題了 關於網頁 parser的問題

看板java作者 (不再嘴砲了)時間17年前 (2008/05/05 02:12), 編輯推噓3(301)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《butme (who?)》之銘言: : 小弟最近的問題有點多 麻煩大家幫我想想看了 : 我在作的事如下 : : input 是一個URL : 我想分析這個URL內所有包在table tag內的資料 : <table> : <tr><td> 1 </td></tr> : <tr><td> 2 </td></tr> : <tr> : <table> : <tr><td> 3 </td></tr> : <tr><td> 4 </td></tr> : </table> : </tr> : <tr><td> 7 </td></tr> : </table> : <table> : <tr><td> 5 </td></tr> : <tr><td> 6 </td></tr> : </table> String HtmlSource=網頁的原始資料 Pattern P_table = Pattern.compile("<table>[\\S\\s]+<\table>",,Pattern.UNICODE_CASE); Matcher M_table = P_table.matcher(HtmlSource); while(M_table.find()){ String Table_content = M_table.group(); Pattern P_td= Pattern.compile("<td>[\\S\\s]*?</td>",,Pattern.UNICODE_CASE); Matcher M_td= P_td..matcher(Table_content); while(M_td.find){ String result =M_td.group(); 這邊的result就是<td></td>中間的字串了 } pattern的地方非常不嚴謹 話說 要用暴力法indexOf也是可以寫出來(這是我ㄧ年前幹過的蠢事) } : 真實情況可能更複雜 : 我希望我能得到三個table的物件,結果如下 : 第一個table : <tr><td> 1 </td></tr> : <tr><td> 2 </td></tr> : <tr><td> 7 </td></tr> : 第二個table : <tr><td> 3 </td></tr> : <tr><td> 4 </td></tr> : 第三個table : <tr><td> 5 </td></tr> : <tr><td> 6 </td></tr> : 希望程式不要寫死 而且傳回的值是三個table物件 : 而三個table物件內 又包含了tr、td物件,可以讓我分析出它們夾的plaintext : 請問版上的大大們有什麼好方法或好建議嗎 @@~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.147.184 ※ 編輯: slalala 來自: 61.59.147.184 (05/05 02:13)

05/05 08:25, , 1F
這樣有辦法判斷哪個值是屬於哪個table的嗎
05/05 08:25, 1F

05/05 08:27, , 2F
用dom的xml parser假裝他是xml就好了,再用getElementB
05/05 08:27, 2F

05/05 08:29, , 3F
yTagName("table")就會傳回三個element
05/05 08:29, 3F

05/05 09:17, , 4F
這樣的作法似乎對第一個TABLE來說取到的值是1 2 3 4 7
05/05 09:17, 4F
文章代碼(AID): #187Vn-6e (java)
文章代碼(AID): #187Vn-6e (java)