作者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)
1F:推 butme:这样有办法判断哪个值是属於哪个table的吗 05/05 08:25
2F:推 willieliao:用dom的xml parser假装他是xml就好了,再用getElementB 05/05 08:27
3F:→ willieliao:yTagName("table")就会传回三个element 05/05 08:29
4F:推 butme:这样的作法似乎对第一个TABLE来说取到的值是1 2 3 4 7 05/05 09:17