java操作网页源代码字符串 本帖最后由 derline 于 2011-02-04 21:01:00 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说白了就是说要“偷取”别人的数据吧?1:如果表格有规律的话使用正则表达式2:没有规律的话,需要用 HTML 解析工具,比如:HTMLParser 正则一点也不会,还请大侠给个示范,以此段代码为例,谢谢:<html> <body> <table> <tr> <td>1111</td> <td>2222</td> </tr> <tr> <td>3333</td> <td>4444</td> </tr> </table> </body></html> 使用HTMLParser解析网页数据:HTMLPARSER例子如下:先下载Jar包,再测试如下例子: /* * 测试对<table><tr><td></td></tr></table>的解析 */ public static void testTable() { Parser myParser; NodeList nodeList = null; myParser = Parser.createParser("<body> " + "<table id='table1′ >" + "<tr><td>1-11</td><td>1-12</td><td>1-13</td>" + "<tr><td>1-21</td><td>1-22</td><td>1-23</td>" + "<tr><td>1-31</td><td>1-32</td><td>1-33</td></table>" + "<table id='table2′ >" + "<tr><td>2-11</td><td>2-12</td><td>2-13</td>" + "<tr><td>2-21</td><td>2-22</td><td>2-23</td>" + "<tr><td>2-31</td><td>2-32</td><td>2-33</td></table>" + "</body>", "GBK"); NodeFilter tableFilter = new NodeClassFilter(TableTag.class); OrFilter lastFilter = new OrFilter(); lastFilter.setPredicates(new NodeFilter[] { tableFilter }); try { nodeList = myParser.parse(lastFilter); for (int i = 0; i <= nodeList.size(); i++) { if (nodeList.elementAt(i) instanceof TableTag) { TableTag tag = (TableTag) nodeList.elementAt(i); TableRow[] rows = tag.getRows(); for (int j = 0; j < rows.length; j++) { TableRow tr = (TableRow) rows[j]; TableColumn[] td = tr.getColumns(); for (int k = 0; k < td.length; k++) { System.out.println("<td>" + td[k].toPlainTextString()); } } } } } catch (ParserException e) { e.printStackTrace(); } } 我晕,点错了,把分分给你下楼了。。CSDN设计不好的地方 java数据类型及其封装类的问题 初学者提问,这个错误是怎么回事? 怎么样设置表格标题栏的样式 string缓冲区问题 请问java里怎么实现一个文本框,自动换行,没有水平滚动条 java 中有没有类似 C++ 中友元(friend member)的机制? 在加20分,IO问题, 快帮帮我 数据库连接问题? 初学者问题:假设有A.java和B.java两个文件在同一目录下。。。。。。 新人求解 含有不规则空白的字符串,如何准确切割? JAVA线程的重要性?
2:没有规律的话,需要用 HTML 解析工具,比如:HTMLParser
<body>
<table>
<tr>
<td>1111</td>
<td>2222</td>
</tr>
<tr>
<td>3333</td>
<td>4444</td>
</tr>
</table>
</body>
</html>
HTMLPARSER例子如下:
先下载Jar包,再测试如下例子: /*
* 测试对<table><tr><td></td></tr></table>的解析
*/
public static void testTable() {
Parser myParser;
NodeList nodeList = null;
myParser = Parser.createParser("<body> " + "<table id='table1′ >"
+ "<tr><td>1-11</td><td>1-12</td><td>1-13</td>"
+ "<tr><td>1-21</td><td>1-22</td><td>1-23</td>"
+ "<tr><td>1-31</td><td>1-32</td><td>1-33</td></table>"
+ "<table id='table2′ >"
+ "<tr><td>2-11</td><td>2-12</td><td>2-13</td>"
+ "<tr><td>2-21</td><td>2-22</td><td>2-23</td>"
+ "<tr><td>2-31</td><td>2-32</td><td>2-33</td></table>"
+ "</body>", "GBK");
NodeFilter tableFilter = new NodeClassFilter(TableTag.class);
OrFilter lastFilter = new OrFilter();
lastFilter.setPredicates(new NodeFilter[] { tableFilter });
try {
nodeList = myParser.parse(lastFilter);
for (int i = 0; i <= nodeList.size(); i++) {
if (nodeList.elementAt(i) instanceof TableTag) {
TableTag tag = (TableTag) nodeList.elementAt(i);
TableRow[] rows = tag.getRows(); for (int j = 0; j < rows.length; j++) {
TableRow tr = (TableRow) rows[j];
TableColumn[] td = tr.getColumns();
for (int k = 0; k < td.length; k++) {
System.out.println("<td>"
+ td[k].toPlainTextString());
} } }
} } catch (ParserException e) {
e.printStackTrace();
}
}