高手帮助 htmlparser懂得进
liuqiyuan
2010-12-31
给这2个表格,如何过滤出指定的TD 表格内容项。我想根据td_num得到指定的td_value。因为标签属性都一样,所以有些困难。比如,我只想要第一个表格的td_value2和第二个表格的td_value6。如何根据td_num得到td_value呢???
请高手给出代码,最好用filter方法遍历节点访问内容。 代码好的,我会追加分!!! <table border="0" cellpadding="2" cellspacing="0"><tr><td>FN</td><td>ISI Export Format</td></tr><tr><td>VR</td><td>1.0</td></tr><table xmlns:exsl="http://exslt.org/common"> <tr> <td valign="top">td_1 </td> <td>td_value1</td> </tr> <tr> <td valign="top">td_2 </td> <td>td_value2</td> </tr> <tr> <td valign="top">td_3</td> <td>td_value3</td> </tr> </table> <table border="0" cellpadding="2" cellspacing="0"><tr><td>FN</td><td>ISI Export Format</td></tr><tr><td>VR</td><td>1.0</td></tr><table xmlns:exsl="http://exslt.org/common"> <tr> <td valign="top">td_4 </td> <td>td_value4</td> </tr> <tr> <td valign="top">td_5</td> <td>td_value5</td> </tr> <tr> <td valign="top">td_6</td> <td>td_value6</td> </tr> <tr> <td valign="top">td_7</td> <td>td_value7</td> </tr> </table> |
|
gbfd2012
2011-01-04
String path="file:///D:/hh.html";
Parser parser=new Parser(); parser.setResource(path); NodeFilter filter=new NodeClassFilter(TableTag.class); NodeList list=parser.parse(filter); TableTag table1=(TableTag) list.elementAt(1); TableTag table2=(TableTag) list.elementAt(3); TableRow tableRow=table1.getRow(1); TableColumn[] tableColumn=tableRow.getColumns(); System.out.println("第一个值为: "+tableColumn[1].toPlainTextString()); TableRow tableRow2=table2.getRow(2); TableColumn[] tableColumn2=tableRow2.getColumns(); System.out.println("第二个值为: "+tableColumn2[1].toPlainTextString()); 其中的path为你的源码。。起始,感觉用htmlparser解析表格不是很爽,,你可以尝试下用xpath来定位表格,,这些的前提是你必须把网页源码的标签补齐,,,nekohtml可以补齐标签。。参考下吧。。 |
|
xjxiao
2011-01-07
htmlparser 这个东西以前工作的时候用过,用来抓取网页的数据的,现在好久没有用了,大家可以一起聊聊哦 QQ 1353739949
|
|
xjxiao
2011-01-07
public class Siluofake {
public static void main(String[] args) throws Exception { // new HtmlFileAll().readTableContent(); Parser parser; try { parser = new Parser( "http://eklubkeno.etip.sk/Archive.aspx?ddlDay=4&ddlMonth=marec&ddlYear=2010&ddlTimeSpan=09:00-09:59"); parser.setEncoding("UTF-8"); NodeFilter filter = new NodeClassFilter(TableTag.class); NodeList list = parser.extractAllNodesThatMatch(filter); String temp = ""; String result = ""; for (int i = 0; i < list.size(); i++) { if (i % 2 != 0 && i != 1) { // 抓取数据所在表的下标值和 // 过滤多余的标签(因为改网上的数据没有任何隔离符号,这里用\N输出数据) TableTag table = (TableTag) list.elementAt(i); for (int j = 0; j < table.getRowCount(); j++) { TableRow row = table.getRow(j); TableColumn[] columns = row.getColumns(); for (int k = 0; k < columns.length; k++) { // System.out.println(columns[k].toPlainTextString()); temp = columns[k].toPlainTextString(); result += temp + ","; } } } } //System.out.println(result); String str = ""; String[] arrays = result.split(","); for (int i = 0; i < 20; i++) { str += arrays[i] + ","; } str = str.substring(0, str.length() - 1); System.out.println(str); } catch (Exception e) { // TODO: handle exception } } |
|
love_ai87
2011-01-08
jsoup,类jquery的选择器,很方便
|
|
wf1006
2011-01-11
用javascript也可以找到对应的值啊!为什么不用?
|
|
ilrxx
2011-01-12
我之前做个整站的抓取,nekohtml个人感觉比htmlparser要方便一些,他可以通过xpath定位,你基本只需要用firefox的firebug插件得到要抓取的区域的xpath,然后用nekohtml的api去做就可以了,缺点是有些xpath需要自己调整。
|
|
sunxian99
2011-07-06
ilrxx 写道 我之前做个整站的抓取,nekohtml个人感觉比htmlparser要方便一些,他可以通过xpath定位,你基本只需要用firefox的firebug插件得到要抓取的区域的xpath,然后用nekohtml的api去做就可以了,缺点是有些xpath需要自己调整。
能详细点吗 |
|
illu
2011-07-06
jsoup jsoup...
只用熟悉选择器 这个很好用的 |