作者slalala (不再嘴砲了)
看板java
標題Re: [問題] 又來問問題了 關於網頁 parser的問題
時間Mon May 5 02:12:12 2008
※ 引述《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)
推 butme:這樣有辦法判斷哪個值是屬於哪個table的嗎 05/05 08:25
推 willieliao:用dom的xml parser假裝他是xml就好了,再用getElementB 05/05 08:27
→ willieliao:yTagName("table")就會傳回三個element 05/05 08:29
推 butme:這樣的作法似乎對第一個TABLE來說取到的值是1 2 3 4 7 05/05 09:17